Se me ha dado una tarea de la siguiente manera:

Lea tres frases de la aplicación de consola. Cada frase no debe superar los 80 caracteres. A continuación, copie cada carácter de cada oración de entrada en una matriz de caracteres de [3 x 80].

La primera frase debe cargarse en la primera fila en el orden inverso de los caracteres – por ejemplo, "mary tenía un corderito" debe cargarse en la matriz como "bmal elttil a dah yram".

La segunda frase debe cargarse en la segunda fila en el orden inverso de las palabras – por ejemplo, "mary tenía un corderito" debe cargarse en la matriz como "cordero pequeño a tenía mary".

La tercera frase debe cargarse en la tercera fila donde si el índice de la matriz es divisible por 5, entonces el carácter correspondiente es reemplazado por la letra 'z' – por ejemplo, "mary tenía un pequeño cordero" debe cargarse en la matriz como "mary zad azlittze lazb" – que es decir, los caracteres de las posiciones de índice 5, 10, 15 y 20 fueron reemplazados por 'z'. Tenga en cuenta que un espacio vacío también es un carácter y que el índice comienza desde la posición 0.

Ahora imprima el contenido de la matriz de caracteres en la consola.

Los métodos, tipos de valor devuelto y parámetros en el código siguiente se especifican según sea necesario, por lo que no puedo cambiar ninguna de esa información. Tengo problemas para inicializar la matriz 2d. Las instrucciones dicen que las oraciones deben cargarse en la matriz ya invertida, etc., pero los parámetros de los métodos para hacer esto llaman a cadenas. Supongo que significa que debo leer las líneas como cadenas y, a continuación, llamar a los métodos para modificarlas y, a continuación, usar toCharyArray para convertirlas antes de cargarlas en la matriz 2d. No entiendo cómo inicializar la matriz 2D con los valores de las matrices char. ¿Hay algún tipo de bucle for que pueda usar? Otro problema es que no se puede realizar ningún procesamiento dentro del método principal, pero en las instrucciones no hay ningún método que pueda llamar para rellenar la matriz.

importar java.util.regex.Pattern;

clase pública ReversedSentence ?

public static String change5thPosition(String s){
    char[] chars = s.toCharArray();
    for (int i = 5; i < s.length(); i = i + 5) {
        chars[i] = 'z';
    }
    String newString = new String(chars);
    return newString;
}

public static String printChar2DArray(char[][] arr){
    for (int x = 0; x < 3; x++) {
        for (int y = 0; y < 80; y++) {
            // just a print so it does not make new lines for every char
            System.out.print(arr[x][y]);
        }

    }
    return null;
}

public static String reverseByCharacter(String s){
    String reverse = new StringBuffer(s).reverse().toString();
    return reverse;
}


public static String reverseByWord(String s){
    Pattern pattern = Pattern.compile("\\s"); //splitting the string whenever there
    String[] temp = pattern.split(s);  //  is whitespace and store in temp array.
    String result = "";
    for (int i = 0; i < temp.length; i++) {
        if (i == temp.length - 1)
            result = temp[i] + result;
        else
            result = " " + temp[i] + result;
    }
    return result;
}

public static String truncateSentence(String s){
    if (s==null || s.length() <= 80)
        return s;

    int space = s.lastIndexOf(' ', 80);
    if (space < 0)
        return s.substring(0, 80);

    return s;
}


public static void main(String[] args) {

    String sentence1 = ("No one was available, so I went to the movies alone.");
    String sentence2 = "Ever since I started working out, I am so tired.";
    String sentence3 = "I have two dogs and they are both equally cute.";


    char[][] arr = new char[3][80];
    arr[0] = reverseByCharacter(sentence1).toCharArray();
    arr[1] = reverseByWord(sentence2).toCharArray();
    arr[2] = change5thPosition(sentence3).toCharArray();


    printChar2DArray(arr);
}

}

El error que estoy recibiendo es:

Excepción en el subproceso "main" java.lang.ArrayIndexOutOfBoundsException: Index 52 fuera de los límites para la longitud 52 en ReversedSentence.printChar2DArray(ReversedSentence.java:20) en ReversedSentence.main(ReversedSentence.java:71) .enola seivom eht ot tnew I os ,elbaliava vio eno oN

1
KDLH 3 nov. 2019 a las 20:13