249 votes

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

398voto

Anthony Forloney Points 30083

Vous devez initialiser errorSoon, comme indiqué par le message d'erreur, vous n'avez qu' a déclaré .

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

Vous avez besoin d'initialiser le tableau de sorte qu'il peut allouer de la bonne mémoire de stockage pour l' String éléments avant que vous pouvez commencer le réglage de l'index.

Si vous avez seulement déclarer le tableau (comme vous l'avez fait) il n'y a pas de mémoire allouée pour l' String éléments, mais seulement une référence poignée d' errorSoon, et renvoie une erreur lorsque vous essayez d'initialiser une variable à n'importe quel indice.

Comme une note de côté, vous pouvez également initialiser l' String tableau à l'intérieur d'accolades, { } comme si,

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

ce qui est équivalent à

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

162voto

Yauhen Points 351
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};

30voto

Taylor Leese Points 18895
String[] errorSoon = { "foo", "bar" };

-- ou --

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

7voto

AaronM Points 1069
String[] errorSoon = new String[n];

Avec n étant le nombre de broches il doit contenir.

Vous pouvez le faire dans la déclaration, ou de le faire sans le String[] plus tard, tant que c'est avant d'essayer de les utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X