2010-04-01 22 views
136

erroreJava: come inizializzare String []?

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

Codice

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

risposta

229

È necessario initializeerrorSoon, come indicato dal messaggio di errore, hai solo declared esso.

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

è necessario inizializzare l'array in modo che possa allocare la memoria corretta per i String elementi prima è possibile avviare l'impostazione dell'indice.

Se solo dichiara la matrice (come avete fatto) non c'è memoria allocata per gli String elementi, ma solo una maniglia riferimento errorSoon, e genera un errore quando si tenta di inizializzare una variabile in qualsiasi indice .

Come nota laterale, si potrebbe anche inizializzare l'array String all'interno delle parentesi, { } come così,

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

che equivale a

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

E 'un peccato che non è possibile utilizzare() per creare un'istanza di ogni stringa in la tua matrice con un valore predefinito. Un array di 5 stringhe vuote dovrebbe essere = new Array [5] (""); invece di = {"", "", "", "", ""}. –

+0

Utilizzare un ciclo for. –

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

essendo N il numero di stringhe ha bisogno di tenere.

È possibile farlo nella dichiarazione, o farlo senza la stringa [] in seguito, purché sia ​​prima di provare a utilizzarli.

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

Forse non esattamente quello che suggerisce il titolo della domanda degli OP ma stavo cercando di passare la mia stringa ad un parametro che accetta String [], questa è la soluzione – kommradHomer

+0

Non puoi omettere la nuova String btw? String [] output = {"", "", ""}; sembra funzionare nel mio codice. –

+2

Se hai già inizializzato la tua matrice e vuoi inizializzarla di nuovo, non puoi andare 'args = {" nuovo "," array "};' Dovrai 'args = new String [] {" nuovo "," array "};' – Darpan

1

Si può sempre scrivere in questo modo

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

Credo che solo la migrazione da C++, Bene in java è necessario inizializzare un tipo di dati (altri tipi poi primitivi e String non è considerato un tipo primitivo in java) per usarli come in base alle loro specifiche se non lo fai, è proprio come una variabile di riferimento vuota (proprio come un puntatore nel contesto di 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

Dichiarazione String:

String str; 

stringa di inizializzazione

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"; 

Possiamo ottenere carattere individuale in Stringa:

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

Se voglio ottenere il valore di caratteri ASCII individuo come questo:

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

Ora voglio convertire il valore ASCII in charecter/Simbolo.

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

è inizializzazione e ottenere il codice lunghezza della stringa in modo molto semplice per i principianti

2

In Java 8 possiamo anche fare uso di flussi esempio

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

Nel caso in cui abbiamo già una lista di stringhe (stringList) allora possiamo raccogliere nella matrice di stringhe come:

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