Java prb de debutant
kevinm3
-
danimo -
danimo -
Bonjour,
Je suis en train de m'initier a java, et j'ai tenté de créer un pb simple qui me permet de générer aléatoirement 5 numéros pour l'euromillion.
Je voudrais fignoler ce prog en admettant que si deux nombres sont identeiques lorsqu'ils sont générés la boucle recommence. voici mon code pour le moment
import java.util.Random;
public class prob {
/**
* @param args
*/
public static void main(String[] args) {
int num = 50;
int eto = 9;
long resultnum = (long) ((num * (num-1)* (num-2) * (num-3) * (num-4))/( 1*2*3*4*5));
long resulteto = (long) ((eto * (eto-1))/(1*2));
System.out.println("Le nombre de combinaisons Euromillion est: " +resultnum*resulteto);
Random r = new Random();
int Min = 0;
int Max = 50;
int v = Min + r.nextInt(Max - Min);
int w = Min + r.nextInt(Max - Min);
int x = Min + r.nextInt(Max - Min);
int y = Min + r.nextInt(Max - Min);
int z = Min + r.nextInt(Max - Min);
if (v == w || v==x || v==y || v==z || w==x || w==y || w==z || x==y || x==z || y==z );
System.out.println("1er : " +v );
System.out.println("2em : " +w );
System.out.println("3em : " +x );
System.out.println("4em : " +y );
System.out.println("5em : " +z );
}
}
voila c'est le if qui me pose probleme je sais pas comment faire recommencer lorsque j'ai 2 nombre identiques.
En basic j'y arrivais avec les calculatrices TI92 ect... avec le simple goto
Lbl debut
...............
if a = b
goto debut
Je suis en train de m'initier a java, et j'ai tenté de créer un pb simple qui me permet de générer aléatoirement 5 numéros pour l'euromillion.
Je voudrais fignoler ce prog en admettant que si deux nombres sont identeiques lorsqu'ils sont générés la boucle recommence. voici mon code pour le moment
import java.util.Random;
public class prob {
/**
* @param args
*/
public static void main(String[] args) {
int num = 50;
int eto = 9;
long resultnum = (long) ((num * (num-1)* (num-2) * (num-3) * (num-4))/( 1*2*3*4*5));
long resulteto = (long) ((eto * (eto-1))/(1*2));
System.out.println("Le nombre de combinaisons Euromillion est: " +resultnum*resulteto);
Random r = new Random();
int Min = 0;
int Max = 50;
int v = Min + r.nextInt(Max - Min);
int w = Min + r.nextInt(Max - Min);
int x = Min + r.nextInt(Max - Min);
int y = Min + r.nextInt(Max - Min);
int z = Min + r.nextInt(Max - Min);
if (v == w || v==x || v==y || v==z || w==x || w==y || w==z || x==y || x==z || y==z );
System.out.println("1er : " +v );
System.out.println("2em : " +w );
System.out.println("3em : " +x );
System.out.println("4em : " +y );
System.out.println("5em : " +z );
}
}
voila c'est le if qui me pose probleme je sais pas comment faire recommencer lorsque j'ai 2 nombre identiques.
En basic j'y arrivais avec les calculatrices TI92 ect... avec le simple goto
Lbl debut
...............
if a = b
goto debut
Configuration: Windows Vista Internet Explorer 7.0
3 réponses
-
bonjour,
tu peux mettre le travail de génération des code dans une méthode.
ainsi il sera facile d'appeler la méthode. -
Salut,
La méthode suivante est à adapter au cas "Euromillion"
public static void nombreAlea() { boolean encore = true; int[] tab = new int[5]; // est initialisé a 0 par défaut for (int i = 0; i <5; i++) // on l'initialise a -1 sinon le num. éventuel 0 serait un doublon tab[i] = -1; int i1 = 0; int i2 = 0; while(encore) { for (i1 = 0; i1 <5; i1++) { encore = false; // sera forcé true si doublon Random r = new Random(); int Min = 0; int Max = 50; int a = Min + r.nextInt(Max - Min); //trouvé for (i2 = 0; i2 <5; i2++) { if (a == tab[i2]) { encore = true; // supprimer en exploitation normale // >>>>>>>>>>>>>>> d'ici, System.out.println("Les num. deja obtenus:"); for (int i = 0; i <5; i++) { System.out.println(tab[i]); // pour controler deja trouvé } System.out.println("Le nouveau num. obtenu:\n" + a + " est un doublon, on ne le prend pas.(i2 = " + i2 + ")\n"); // >>>>>>>>>>>>>>> a ici i1--; break; } } if (encore == false) tab[i1] = a; else break; } } for (i1 = 0; i1 <5; i1++) { System.out.println("num. " + (i1 +1) + ": " + tab[i1]); } System.out.println(""); }
Elle est appelée depuis la méthode 'main':
public static void main(String args[]) { ..... ...... nombreAlea(); // Les appels suivants permettent d'obtenir des éventuels doublons // qui seront mis en évidence avant les suppréssions de lignes préconisées // dans la méthode 'nombreAlea()' // sont a supprimer en exploitation normale nombreAlea(); nombreAlea(); nombreAlea(); nombreAlea(); nombreAlea();
Cordialement,
Dan -
Ps,
S'il y a un doublon, il n'est bien entendu pas pris, mais les numéros déjà obtenus non plus puisqu'on recommence au début...
Dan