Java prb de debutant

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. 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
    1. 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
      1. 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