112 votes

initialisation d'un tableau booléen en java

J'ai le code suivant

public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;

Quelqu'un pourrait-il me dire ce que je fais de travers et comment je peux le corriger ? J'ai juste besoin d'initialiser tous les éléments du tableau à la valeur booléenne false. Je vous remercie.

310voto

BalusC Points 498232

J'ai juste besoin d'initialiser tous les éléments du tableau à la valeur booléenne false.

Soit utiliser boolean[] de manière à ce que toutes les valeurs soient définies par défaut comme suit false :

boolean[] array = new boolean[size];

Ou utiliser Arrays#fill() pour remplir tout le tableau avec Boolean.FALSE :

Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);

Notez également que l'index du tableau est basé sur zéro. Le tableau freq[Global.iParameter[2]] = false; ligne comme vous l'avez fait causerait ArrayIndexOutOfBoundsException . Pour en savoir plus sur les tableaux en Java, consultez le site ce tutoriel Oracle de base .

4 votes

Le deuxième morceau de code est utile dans le cas où nous voulons l'initialiser (le définir) à toutes les valeurs vraies. Excellente réponse !

3 votes

Je préférerais inverser le nom de la variable et utiliser l'initialisation par défaut avec des valeurs fausses.

0 votes

Je suis en fait favorable à Boolean[] array car il permet d'avoir trois états pour chaque élément : true , false y null ce qui est utile dans les cas où l'on souhaite indiquer que quelque chose n'a pas été traité.

21voto

Jørgen Fogh Points 3579

Le tableau sera initialisé à false lorsque vous l'allouez.

Tous les tableaux en Java sont initialisés à la valeur par défaut du type. Cela signifie que les tableaux d'ints sont initialisés à 0, les tableaux de booléens sont initialisés à false et les tableaux de types de référence sont initialisés à null.

17 votes

Il utilise Boolean , pas boolean Il sera donc défini par défaut comme suit null .

1 votes

Correct. Je n'avais pas vu cela. Arrays.fill devrait faire l'affaire.

0 votes

Cela s'applique-t-il à toutes les versions de Java ?

9voto

Big Endian Points 364

En Java, les tableaux commencent à être indexés à 0. Dans votre exemple, vous faites donc référence à un élément qui est en dehors du tableau d'une unité.

Il devrait probablement s'agir de quelque chose comme freq[Global.iParameter[2]-1]=false ;

Il faudrait boucler le tableau pour l'initialiser en entier, cette ligne n'initialise que le dernier élément.

En fait, je suis presque sûr que false est la valeur par défaut des booléens en Java, de sorte que vous n'avez peut-être pas besoin d'initialiser du tout.

Meilleures salutations

2 votes

Il utilise Boolean , pas boolean Il sera donc défini par défaut comme suit null .

5voto

codaddict Points 154968

Ils seront initialisés à false par défaut. En Java, les tableaux sont créés sur le tas et chaque élément du tableau se voit attribuer une valeur par défaut en fonction de son type. Par exemple boolean la valeur par défaut est false .

3 votes

Il utilise Boolean , pas boolean Il sera donc défini par défaut comme suit null .

0 votes

Je voulais dire "booléen", désolé pour l'erreur.

2voto

oneat Points 2206

Public static Boolean freq[] = new Boolean[Global.iParameter[2]] ;

Global.iParameter[2] :

Il devrait s'agir d'une valeur constante

1 votes

Le problème est que vous utilisez Global.iParameter[2] pour accéder au tableau, mais les indices vont de 0 jusqu'à Global.iParameter[2]-1 seulement !

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