2010-04-01 18 views
136

errorJava: ¿cómo inicializar String []?

% javac StringTest.java 
StringTest.java:4: variable errorSoon might not have been initialized 
     errorSoon[0] = "Error, why?"; 

Código

public class StringTest { 
     public static void main(String[] args) { 
       String[] errorSoon; 
       errorSoon[0] = "Error, why?"; 
     } 
} 

Respuesta

229

Necesitas initializeerrorSoon, según lo indicado por el mensaje de error, sólo tiene que declared.

String[] errorSoon;     // <--declared statement 
String[] errorSoon = new String[100]; // <--initialized statement 

debe inicializar la matriz por lo que puede asignar el almacenamiento de la memoria correcta para los elementos de String antes de comenzar a configurar el índice.

Si sólodeclara la matriz (como lo hizo) no hay memoria asignada para los String elementos, pero sólo un mango referencia a errorSoon, y generará un error al intentar inicializar una variable en cualquier índice .

Como nota al margen, también se puede inicializar la matriz String dentro de llaves, { } como así,

String[] errorSoon = {"Hello", "World"}; 

lo que equivale a

String[] errorSoon = new String[2]; 
errorSoon[0] = "Hello"; 
errorSoon[1] = "World"; 
+3

es una pena que no se puede utilizar() para crear una instancia de cada cadena en su matriz con un valor predeterminado. Una matriz de 5 cadenas vacías debería ser = new Array [5] (""); en lugar de = {"", "", "", "", ""}. –

+0

Use un bucle for. –

6
String[] errorSoon = new String[n]; 

siendo n el número de cadenas necesita sostenerse.

Puede hacerlo en la declaración, o hacerlo sin la Cadena [] más adelante, siempre que sea antes de intentar usarlos.

23
String[] errorSoon = { "foo", "bar" }; 

- o -

String[] errorSoon = new String[2]; 
errorSoon[0] = "foo"; 
errorSoon[1] = "bar"; 
104
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"}; 
+2

Tal vez no sea exactamente lo que sugiere el título de pregunta de OP pero estaba tratando de pasar la cadena a un parámetro que acepta String [], esta es la solución – kommradHomer

+0

¿No puedes omitir el nuevo String btw? String [] output = {"", "", ""}; parece funcionar en mi código –

+2

Si ya ha inicializado su matriz y desea reinicializarla, no puede ir 'args = {" new "," array "};' Deberá tener 'args = new String [] {" nuevo "," array "};' – Darpan

1

Siempre se puede escribir como este

String[] errorSoon = {"Hello","World"}; 

For (int x=0;x<errorSoon.length;x++) // in this way u create a for  loop that would like display the elements which are inside the array  errorSoon.oh errorSoon.length is the same as errorSoon<2 

{ 
    System.out.println(" "+errorSoon[x]); // this will output those two  words, at the top hello and world at the bottom of hello. 
} 
9

creo que acaba de migrar desde C++, Java Bueno, en lo que tiene que Inicialice un tipo de datos (distinto de los tipos primitivos y Cadena no se considera un tipo primitivo en Java) para usarlos de acuerdo con sus especificaciones si no lo hace, entonces es como una variable de referencia vacía (muy similar a un puntero en el contexto de C++).

public class StringTest { 
    public static void main(String[] args) { 
     String[] errorSoon = new String[100]; 
     errorSoon[0] = "Error, why?"; 
     //another approach would be direct initialization 
     String[] errorsoon = {"Error , why?"}; 
    } 
} 
0

Declaración Cadena:

String str; 

cadena de inicialización

String[] str=new String[3];//if we give string[2] will get Exception insted 
str[0]="Tej"; 
str[1]="Good"; 
str[2]="Girl"; 

String str="SSN"; 

Podemos tener carácter individual en la secuencia:

char chr=str.charAt(0);`//output will be S` 

Si quiero para obtener el valor de caracteres ASCII individuales como esto:

System.out.println((int)chr); //output:83 

Ahora quiero convertir el valor ASCII en charecter/Símbolo.

int n=(int)chr; 
System.out.println((char)n);//output:S 
0
String[] string=new String[60]; 
System.out.println(string.length); 

es la inicialización y obtener el código de longitud de la cadena de manera muy simple para los principiantes

2

En Java 8 también podemos hacer uso de corrientes, por ejemplo,

String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new); 

En caso de que ya tenemos una lista de cadenas (stringList) entonces podemos recoger en la matriz de cadenas como:

String[] strings = stringList.stream().toArray(String[]::new);