Random identique
Bonjour,
J'essaye d'initialiser automatique un tableau de int dans un objet carte ainsi j'ai ceci :
et la méthode initialiser tab comme ceci :
Mais mes nb1, nb2, nb3 sont identique pour toute mes cartes est j'en voie pas la raison ...
Merci d'avance pour votre aide.
Cordialement.
J'essaye d'initialiser automatique un tableau de int dans un objet carte ainsi j'ai ceci :
new Carte( [mes autres attributs ], initialiserTab(new int[3]) )
et la méthode initialiser tab comme ceci :
Random rand1 = new Random();
Random rand2 = new Random();
Random rand3 = new Random();
nb1 = rand1.nextInt(25);
nb2 = rand2.nextInt(25);
nb3 = rand3.nextInt(25);
for (int i = 0; i < 3; i++) {
tab[i] = nb1;
if (i == 1) {
tab[i] = nb2;
}
if (i == 2) {
tab[i] = nb3*-1;
}
}
Mais mes nb1, nb2, nb3 sont identique pour toute mes cartes est j'en voie pas la raison ...
Merci d'avance pour votre aide.
Cordialement.
5 réponses
-
Contributeurbonjour, je pense que rand1 suffit, et peut-être utilisé plusieurs fois.
-
-
Contributeur@Hamster18je ne peux pas deviner comment tu fais avec uniquement rand1.
-
@yg_becomme ceci :
Random rand1 = new Random(); nb1 = rand1.nextInt(25); nb2 = rand1.nextInt(25); nb3 = rand1.nextInt(25); for (int i = 0; i < 3; i++) { tab[i] = nb1; if (i == 1) { tab[i] = nb2; } if (i == 2) { tab[i] = nb3*-1; } } -
Contributeur@Hamster18il serait préférable de réutiliser rand1, sans faire new à chaque appel de la méthode.
-
-
D'accord, mais ça change pas mon problème, toute mes carte ont dans leur tableau les mêmes valeurs ...
-
Voici le code exacte :
int nb1; int nb2; int nb3; private Random rand1 = new Random(); private int[] initialiserTab( int tab[]) { nb1 = rand1.nextInt(5)+5; nb2 = rand1.nextInt(5)+5; nb3 = rand1.nextInt(5)+5; for (int i = 0; i < 3; i++) { tab[i] = nb1; if (i == 1) { tab[i] = nb2; } if (i == 2) { tab[i] = nb3*-1; } } return tab; } public ListeCarte() { listeCarte.add(new Carte(1,"Droit", R.drawable.droit_des_femmes, "Voulez-vous donner le droit de vote aux femmes ?", initialiserTab(new int[3]) )); listeCarte.add(new Carte(2,"Guerre", R.drawable.guerre, "Les hommes cherchent sans cesse à s'entretuer. Voulez-vous leur en donner les moyens ?", initialiserTab(new int[3]) )); [...] } -
Non toujours pas , et c'est dans une classe listeCarte
-
ModérateurBonjour,
Plusieurs "corrections" pour éviter du code inutile (genre la boucle qui ne sert à rien, les variables globales à proscrire, etc.)
private static final Random random = new Random(); private static int[] randomArray() { return new int[] { random.nextInt(5)+5, random.nextInt(5)+5, random.nextInt(5)+5 } } public ListeCarte() { listeCarte.add(new Carte(1, "Droit", R.drawable.droit_des_femmes, "Voulez-vous donner le droit de vote aux femmes ?", randomArray())); listeCarte.add(new Carte(2, "Guerre", R.drawable.guerre, "Les hommes cherchent sans cesse à s'entretuer. Voulez-vous leur en donner les moyens ?", randomArray())); }