Java prb de debutant

kevinm3 -  
 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
Configuration: Windows Vista Internet Explorer 7.0

3 réponses

  1. nabil07 Messages postés 161 Statut Membre 64
     
    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.
    0
  2. danimo
     
    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
    0
  3. danimo
     
    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
    0