El ejercicio consiste en introducir una frase y que la trate de modo que sustituya las letras que están en el Array y en la frase por la letra que está en el Array + 2. Es decir, si el array fuese de a, b, c y d y la frase fuese bajo debería devolver dcjo, y si la frase fuese dado debería devolver bcbo.
Llevo ya una hora delante del código y no sé qué hago mal para que sólo lo haga con la última letra que tiene que sustituir. Gracias de antemano.
import java.io.BufferedReader;
import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList;
public class Main { final static ArrayList letrasArray = new ArrayList<>();
public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String frase = "", resultado = ""; inicializarLetras(letrasArray); System.out.println("Introduce frase a traducir"); frase = br.readLine(); resultado = traducir(frase); System.out.println("El resultado de su frase traducida es:\n-->" + resultado); } catch (IOException e) { e.printStackTrace(); } } private static void inicializarLetras(ArrayList<Character> letrasArray) { letrasArray.add('m'); letrasArray.add('n'); letrasArray.add('s'); letrasArray.add('r'); letrasArray.add('l'); letrasArray.add('t'); letrasArray.add('p'); letrasArray.add('d'); letrasArray.add('b'); } private static String traducir(String frase) { String res = null; for (int i = 0; i < frase.length(); i++) { char letraActual = frase.charAt(i); if (letrasArray.contains(letraActual)){ int indexLetra = letrasArray.indexOf(letraActual); if ((letrasArray.size() - indexLetra) == 1) indexLetra = 1; else if ((letrasArray.size() - indexLetra) == 2) indexLetra = 0; res=frase.replace(letraActual, letrasArray.get(indexLetra + 2)); } } return res; }
}