Java: Como llegar enésima letra de las palabras en una matriz de cadenas

user430574:

Estoy obligado a escribir un método estático denominado getSuccessiveLetters (palabras) que tiene una matriz de cadenas y devuelve una sola cadena. Si la matriz de cuerdas es { "hola", "mundo"}, entonces el programa debería devolver "ho". "H" es de la primera palabra, "o" es la segunda letra de la segunda palabra y así sucesivamente.

Me las arreglé para obtener el valor correcto retorno de { "hola", "mundo"}, pero si la matriz de cadena contiene, por ejemplo, { "primero", "segundo", "tercero", "cuarto", "quinta"} se encuentra fuera de rango en su lucha.

public class Template01 {
    public static void main(String[] args) {
        System.out.println(getSuccessiveLetters(new String[]{"1st", "2nd", "3rd", "4th", "fifth"})); 
    }

public static String getSuccessiveLetters(String[] words) {
    char Str[] = new char[words.length];
    String successive;
    for(int i = 0; i < words.length; i++){
        successive = words[i];
        if (i < successive.length()){  
            Str[i] = successive.charAt(i);
        }
        else
        {
            break;
        }
    }
    successive = new String(Str);
    return successive;
}

Yo esperaba que el valor de retorno sea 1Nd, pero la salida real es 1Nd \ x00 \ x00.

Kartik:

Esto sucede porque al inicializar una matriz de caracteres, que se llena la matriz con el valor por defecto carbón.
Se puede utilizar StringBuildero List<Character>hacer crecer su "matriz" con cada adición.

Cambio

char[] str = new char[words.length];

a

StringBuilder str = new StringBuilder();

y

str[i] = successive.charAt(i);

a

str.append(successive.charAt(i));

y luego, al final successive = str.toString();.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=317561&siteId=1
Recomendado
Clasificación