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.
Esto sucede porque al inicializar una matriz de caracteres, que se llena la matriz con el valor por defecto carbón.
Se puede utilizar StringBuilder
o 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();
.