Voici ma version de votre code:
import java.util.Random;
import java.util.ArrayList;
public class RandomTest {
public static void main(String[] args) {
ArrayList<Integer> duplicates = new ArrayList<Integer>();
int random1 = 0, random2 = 0;
Random randomGenerator = new Random();
for (int loop = 1; loop <= 1000; loop++) {
random1 = randomGenerator.nextInt(100);
random2 = randomGenerator.nextInt(100);
if (random1 == random2) {
duplicates.add(new Integer(random1));
}
}
for (Integer i : duplicates) {
System.out.println("Duplicate: "+i.toString());
}
}
}
Il y a un certain nombre de problèmes que votre solution contient:
int number = number + 1;
Le ci-dessus créent un nouveau numéro appelé int et lui donner la valeur NULL + 1, cela est parce que le ci-dessus peut être divisé en deux lignes:
int num;
num = num + 1;
La première ligne réservera de l'espace mémoire pour une variable appelée num. La deuxième ligne va essayer de mettre la valeur de (num + 1) en num. Comme nous appelons num et qu'il n'a pas été initialisé - cela nous donnera un java.lang.Error (au moins c'est ce que j'ai eu).
Donc, comme vous pouvez le voir, mettre le numéro en dehors de la boucle et initialisant comme ceci:
int number = 0;
for (int loop = 1; loop <= 1000; loop++) {
number = number + 1;
}
incrémente la valeur du nombre de 1, 999 fois.
Ce qui m'amène au point suivant. La boucle for ne fera jamais loop = 1000 car la condition arrêtera la boucle avant que la condition ne soit vraie, donc quand la boucle for finit, loop sera égal à 999. Si vous voulez que la boucle se termine sur loop = 1000, vous devez utiliser loop <= 1000
. De même, la condition if n'est pas nécessaire car lorsque la boucle se termine, elle continue avec le reste du code en dessous.
Je n'ai pas du tout utilisé number
dans ma solution, parce que j'ai utilisé un ArrayList, qui est essentiellement une version beaucoup plus avancée d'un tableau qui peut se développer dynamiquement et faire plein d'autres choses intéressantes. Malheureusement ArrayLists doit contenir des objets, donc j'enveloppe chaque int
dans un objet Integer
et c'est bien. À la fin, j'utilise une boucle for pour parcourir la liste des doublons, pour chaque résultat je l'imprime.
Espérons que cela aide et si vous avez des questions n'hésitez pas à commenter ci-dessous.
Vous trouverez qu'il est beaucoup plus facile de suivre votre propre code si vous indentez plus intelligemment. Pourquoi avez-vous un bloc "if" vide?Et quand pensez-vous que 'loop' sera jamais 1000 * dans la boucle *? –
Pour quoi avez-vous besoin du tableau? Est-ce pour voir à quelle fréquence le groupe de deux chiffres correspond ('54 22 'correspond à '54 22'), ou à quelle fréquence les deux nombres correspondent ('22 22 ')? –
En fait ** boucle ** ne sera jamais 1000 –