Je crée un programme pour une classe qui appelle le programme à créer 6 entiers générés aléatoirement dans la plage 1-40 et à les placer dans un tableau. Les entiers doivent être uniques donc il ne peut pas y avoir une situation où un nombre certain nombre répète. Le tableau est ensuite transmis à une autre méthode qui trie le tableau dans l'ordre croissant. Mon problème est que je ne peux pas obtenir mon code pour générer 6 numéros uniques. Mon code est le suivant:Prévention des entiers en double dans la matrice
private static void getComputer(int computerNumbers, int[] cN)
{
Random randomNumbers = new Random();
for (int i = 0; i < computerNumbers;)
{
int computerStored = randomNumbers.nextInt(39)+1;
if (computerStored == cN[0] || computerStored == cN[1] || computerStored == cN[2] ||
computerStored == cN[3] || computerStored == cN[4] || computerStored == cN[5])
continue;
else
computerStored = cN[i];
i++;
}
}
Le bloc au-dessus du code renvoie un tableau de 0,0,0,0,0,0. Je ne peux pas trouver pourquoi. Toute aide serait très appréciée. Je vous remercie. Juste pour clarifier, je sais comment faire un générateur aléatoire de base.
private static void getComputer(int computerNumbers, int[] cN)
{
Random randomNumbers = new Random();
for (int i = 0; i < computerNumbers; i++)
cN[i] = randomNumbers.nextInt(39)+1;
}
WOW. Une si petite différence pourrait-elle vraiment être la réponse? Je l'ai essayé et cela a fonctionné. Je vous remercie. Pourquoi exactement cela résout-il le problème? – user3577449
@ user3577449 'computerStored = cN [i]' signifie "mettre la valeur de' cN [i] 'dans' computerStored' ", et l'inverse veut dire" mettre la valeur de 'computerStored' dans' cN [i] '" . Les instructions de programmation sont très spécifiques, et l'ordinateur fera exactement ce que vous dites, pas ce que vous vouliez dire mais n'a pas fait. – chrylis
Il résout le problème car vous réaffectiez la valeur 'computerStored' générée en la plaçant à gauche de l'opérateur =. Donc, le tableau n'a jamais été mis à jour. –