web-dev-qa-db-fra.com

Java: comment initialiser String []?

Erreur

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

Code

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

Vous devez initialisererrorSoon, comme indiqué par le message d'erreur, vous n'avez que déclaré it.

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

Vous devez initialiser le tableau afin qu'il puisse allouer le stockage de mémoire correct pour les String éléments avant que vous puissiez commencer à définir l'index.

Si vous seulement déclarez le tableau (comme vous l'avez fait), aucune mémoire n'est allouée pour les éléments String, mais uniquement un descripteur de référence à errorSoon. Une erreur est générée lorsque vous essayez d'initialiser une variable à un index.

En remarque, vous pouvez également initialiser le tableau String entre accolades, { } en tant que tel,

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

ce qui équivaut à

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
285
Anthony Forloney
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
115
Yauhen
String[] errorSoon = { "foo", "bar" };

-- ou --

String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";
25
Taylor Leese

Je crois que vous venez de migrer du C++, vous devez bien initialiser un type de données en Java (autres que les types primitifs et String n’est pas considéré comme un type primitif en Java) pour pouvoir les utiliser conformément à leurs spécifications c'est juste comme une variable de référence vide (un peu comme un pointeur dans le contexte 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?"};   
    }
}
9
Syed Tayyab Abbas

Dans Java 8 , nous pouvons également utiliser des flux, par exemple.

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

Si nous avons déjà une liste de chaînes (stringList), alors nous pouvons collecter dans un tableau de chaînes comme:

String[] strings = stringList.stream().toArray(String[]::new);
7
i_am_zero
String[] errorSoon = new String[n];

Avec n étant le nombre de chaînes à tenir.

Vous pouvez le faire dans la déclaration, ou le faire sans String [] ultérieurement, à condition que ce soit avant d'essayer de les utiliser.

7
AaronM

Vous pouvez toujours l'écrire comme ça 

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.  
}
1
Gopolang

Déclaration de chaîne:

String str;

Initialisation de chaîne

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

Nous pouvons obtenir un caractère individuel dans String:

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

Si je veux obtenir une valeur Ascii de caractère individuel comme ceci:

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

Maintenant, je veux convertir la valeur Ascii en caractères/symboles.

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

c'est l'initialisation et l'obtention du code STRING LENGTH de manière très simple pour les débutants 

0

Vous pouvez utiliser le code ci-dessous pour initialiser la taille et définir une valeur vide dans un tableau de chaînes.

String[] row = new String[size];
Arrays.fill(row, "");
0
Ali Sadeghi
String[] arr = {"foo", "bar"};

Si vous passez un tableau de chaînes à une méthode, faites:

myFunc(arr);

ou faire:

myFunc(new String[] {"foo", "bar"});
0
trillions