Ma méthode ne marche pas
JavaMax
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
DarkenNights Messages postés 137 Date d'inscription Statut Membre Dernière intervention -
DarkenNights Messages postés 137 Date d'inscription Statut Membre Dernière intervention -
Bonjour!
Je dois faire un programme avec deux classes. Une classe pour générer un billet de loterie et une qui s,occupe du tirage.
Je suis incapable de verifier mon billet gagnant...method verifierGagnant()
Si quelqu,un peut m,aider j'apprécirais vraiment!
Merci
import java.util.ArrayList;
/**
* "Faites une description de la classe"
*
* @author
*
* @version 2.0
*/
public class Billet
{
public final static int NUMERO_MIN = 1;
public final static int NUMERO_MAX = 49;
public final static int NB_NUMERO_PAR_BILLET = 6;
private int[] combinaison;
public ArrayList<Billet> ticket;
public Billet ()
{
init();
}
public Billet (int[] vecteur)
{
if (this.unique649(vecteur)== true)
{
combinaison = new int[6];
for (int i = 0; i < 6; i++)
combinaison[i] = vecteur[i];
}
else
{
init();
}
}
protected void init()
{
combinaison = new int[NB_NUMERO_PAR_BILLET];
int nombre;
for(int i = 0; i < combinaison.length; i++)
{
do
{
nombre = ((int)(Math.random() * NUMERO_MAX) + NUMERO_MIN);
}
while(verifierNumero(nombre));
combinaison[i] = nombre;
}
}
protected boolean verifierNumero(int numero)
{
boolean existe = false;
for (int i = 0; i < combinaison.length; i++)
{
if (combinaison[i] == numero)
existe = true;
}
return existe;
}
public String toString()
{
String chaine = "";
for (int i = 0; i < combinaison.length; i++)
{
if(combinaison[i] < 10)
{
chaine += "0";
}
chaine += combinaison[i] + " ";
}
return chaine;
}
public int getNumero(int indice)
{
int numero = 0;
if (indice >= 0 && indice < combinaison.length)
numero = combinaison[indice];
return numero;
}
protected boolean unique649(int[] vecteur)
{
boolean ok = true;
if(vecteur.length == NB_NUMERO_PAR_BILLET)
{
for(int i = 0; i < vecteur.length && ok; i++)
{
if(vecteur[i] >= NUMERO_MIN && vecteur [i] <= NUMERO_MAX)
{
for(int j = i+1 ; j < vecteur.length && ok ; j++)
{
if(vecteur[i] == vecteur[j])
{
ok = false;
}
}
}
else
{
ok = false;
}
}
}
else
{
ok = false;
}
return ok;
}
public int nbIdentiques(Billet paramBillet)
{
int nombre = 0;
for(int i = 0 ; i < paramBillet.combinaison.length; i++)
{
for(int j = 0 ; j < this.combinaison.length ; j ++)
{
if(this.combinaison[j] == paramBillet.combinaison[i] )
{
nombre++;
}
}
}
return nombre;
}
public static void main(String[] args)
{
Billet billet2 = new Billet();
for(int i = 0 ; i < NB_NUMERO_PAR_BILLET ; i++)
{
System.out.println(billet2.combinaison[i]+" ");
}
}
}
import java.util.ArrayList;
/**
* "Faites une description de la classe"
*
* @author
*
* @version 2.0
*/
public class Tirage
{
public final static double PRIX_BILLET = 1;
public final static int PERIODE = 52;
public final static double LOT3Sur6 = 10;
public final static double LOT4Sur6 = 100;
public final static double LOT5Sur6 = 10000;
public final static double LOT6Sur6 = 1000000;
public final static int NOMBRE_ANNEES_MIN = 1;
public final static int NOMBRE_ANNEES_MAX = 1000000;
private ArrayList<Billet> billets;
private ArrayList<Billet> gagnants3Sur6;
private ArrayList<Billet> gagnants4Sur6;
private ArrayList<Billet> gagnants5Sur6;
private ArrayList<Billet> gagnants6Sur6;
//public static Billet ticket;
// Chaque indice du tableau correspond à un numero du loto.
// Le tableau contient le nombre de fois que le numero (correspondant Ã
// l'indice) a été tiré.
private long[] compteurNumeros;
private ArrayList<Integer> indexTrie = new ArrayList<>(Billet.NUMERO_MAX);
public Tirage (int nbAnnee)
{
billets = new ArrayList <Billet> (PERIODE*nbAnnee);
gagnants3Sur6 = new ArrayList <Billet>(0) ;
gagnants4Sur6 = new ArrayList <Billet>(0);
gagnants5Sur6 = new ArrayList <Billet>(0);
gagnants6Sur6 = new ArrayList <Billet>(0);
for(int i = 0 ; i < nbAnnee*PERIODE ; i++)
{
billets.add(new Billet());
}
}
public boolean verifierGagnant(Billet pBillet)
{
boolean ok = false;
for(int i = 0 ; i < pBillet.ticket.size(); i++)
{
if(pBillet.ticket.get(i).nbIdentiques(this.billets.get(i)) > 2)
{
enregistrerBilletGagnant(this.billets.get(i),this.billets.get(i).nbIdentiques(pBillet.ticket.get(i)));
ok = true;
}
}
return ok;
}
private void enregistrerBilletGagnant(Billet combGagnante, int nbIdentiques)
{
switch (nbIdentiques)
{
case 3:
gagnants3Sur6.add(combGagnante);
break;
case 4:
gagnants4Sur6.add(combGagnante);
break;
case 5:
gagnants5Sur6.add(combGagnante);
break;
case 6:
gagnants6Sur6.add(combGagnante);
break;
}
}
private void incrementeNumeros(Billet billet)
{
for(int i = 0; i <= Billet.NB_NUMERO_PAR_BILLET; i++)
{
compteurNumeros[billet.getNumero(i)-1]++;
}
}
private void compteNumerosTirage()
{
for (Billet billet : billets)
{
incrementeNumeros(billet);
}
this.trieCompteurNumero();
}
private void trieCompteurNumero()
{
indexTrie.clear();
ArrayList <Long> tableauTemp = new ArrayList<>(Billet.NUMERO_MAX);
for(int i = 0; i < compteurNumeros.length; i++)
{
tableauTemp.set(i, (long)i);
}
for(int i = 0; i < tableauTemp.size(); i++)
{
if(indexTrie.get(i) < tableauTemp.get(i))
{
indexTrie.set(i, i);
tableauTemp.remove(i);
}
}
}
public long[] tireJusquaGagnant(Billet billet)
{
long [] tableauJusquaGagnant = new long[5];
do
{
this.verifierGagnant(billet);
}
while( gagnants6Sur6.size()==0 );
{
}
return tableauJusquaGagnant;
}
/*public long[] getNumerosPlusPopulaire(int nombre)
{
}
public long[] getNumerosMoinsPopulaire(int nombre)
{
}*/
public int nbGagnants3Sur6()
{
return gagnants3Sur6.size();
}
public int nbGagnants4Sur6()
{
return gagnants4Sur6.size();
}
public int nbGagnants5Sur6()
{
return gagnants5Sur6.size();
}
public int nbGagnants6Sur6()
{
return gagnants6Sur6.size();
}
public double montantGagne3Sur6()
{
return nbGagnants3Sur6() * LOT3Sur6;
}
public double montantGagne4Sur6()
{
return nbGagnants4Sur6() * LOT4Sur6;
}
public double montantGagne5Sur6()
{
return nbGagnants5Sur6() * LOT5Sur6;
}
public double montantGagne6Sur6()
{
return nbGagnants6Sur6() * LOT6Sur6;
}
public double montantDepense()
{
return PRIX_BILLET * billets.size();
}
public double montantGagneTotal()
{
return montantGagne3Sur6() + montantGagne4Sur6() + montantGagne5Sur6()
+ montantGagne6Sur6();
}
public double gainOuPerte()
{
return montantGagneTotal() - montantDepense();
}
public String toString()
{
String s = "";
for (int i = 0; i < billets.size(); i++)
{
s += billets.get(i).toString() + "\n";
}
return s;
}
/**
* Tester les méthodes
*
* @param args inutilisé
*/
public static void main(String[] args)
{
//Tirage test = new Tirage(10);
// test.verifierGagnant(ticket);
Tirage billet1 = new Tirage(1);
Billet test = new Billet();
System.out.println(test.toString());
System.out.println(billet1.toString());
System.out.println(billet1.verifierGagnant(test));
System.out.println( "Gagnant 3/6 :" + billet1.nbGagnants3Sur6());
System.out.println( "Gagnant 4/6 :" + billet1.nbGagnants4Sur6());
System.out.println( "Gagnant 5/6 :" + billet1.nbGagnants5Sur6());
System.out.println( "Gagnant 6/6 :" + billet1.nbGagnants6Sur6());
System.out.println("Montant gagné: " + billet1.gainOuPerte());
}
}
Je dois faire un programme avec deux classes. Une classe pour générer un billet de loterie et une qui s,occupe du tirage.
Je suis incapable de verifier mon billet gagnant...method verifierGagnant()
Si quelqu,un peut m,aider j'apprécirais vraiment!
Merci
import java.util.ArrayList;
/**
* "Faites une description de la classe"
*
* @author
*
* @version 2.0
*/
public class Billet
{
public final static int NUMERO_MIN = 1;
public final static int NUMERO_MAX = 49;
public final static int NB_NUMERO_PAR_BILLET = 6;
private int[] combinaison;
public ArrayList<Billet> ticket;
public Billet ()
{
init();
}
public Billet (int[] vecteur)
{
if (this.unique649(vecteur)== true)
{
combinaison = new int[6];
for (int i = 0; i < 6; i++)
combinaison[i] = vecteur[i];
}
else
{
init();
}
}
protected void init()
{
combinaison = new int[NB_NUMERO_PAR_BILLET];
int nombre;
for(int i = 0; i < combinaison.length; i++)
{
do
{
nombre = ((int)(Math.random() * NUMERO_MAX) + NUMERO_MIN);
}
while(verifierNumero(nombre));
combinaison[i] = nombre;
}
}
protected boolean verifierNumero(int numero)
{
boolean existe = false;
for (int i = 0; i < combinaison.length; i++)
{
if (combinaison[i] == numero)
existe = true;
}
return existe;
}
public String toString()
{
String chaine = "";
for (int i = 0; i < combinaison.length; i++)
{
if(combinaison[i] < 10)
{
chaine += "0";
}
chaine += combinaison[i] + " ";
}
return chaine;
}
public int getNumero(int indice)
{
int numero = 0;
if (indice >= 0 && indice < combinaison.length)
numero = combinaison[indice];
return numero;
}
protected boolean unique649(int[] vecteur)
{
boolean ok = true;
if(vecteur.length == NB_NUMERO_PAR_BILLET)
{
for(int i = 0; i < vecteur.length && ok; i++)
{
if(vecteur[i] >= NUMERO_MIN && vecteur [i] <= NUMERO_MAX)
{
for(int j = i+1 ; j < vecteur.length && ok ; j++)
{
if(vecteur[i] == vecteur[j])
{
ok = false;
}
}
}
else
{
ok = false;
}
}
}
else
{
ok = false;
}
return ok;
}
public int nbIdentiques(Billet paramBillet)
{
int nombre = 0;
for(int i = 0 ; i < paramBillet.combinaison.length; i++)
{
for(int j = 0 ; j < this.combinaison.length ; j ++)
{
if(this.combinaison[j] == paramBillet.combinaison[i] )
{
nombre++;
}
}
}
return nombre;
}
public static void main(String[] args)
{
Billet billet2 = new Billet();
for(int i = 0 ; i < NB_NUMERO_PAR_BILLET ; i++)
{
System.out.println(billet2.combinaison[i]+" ");
}
}
}
import java.util.ArrayList;
/**
* "Faites une description de la classe"
*
* @author
*
* @version 2.0
*/
public class Tirage
{
public final static double PRIX_BILLET = 1;
public final static int PERIODE = 52;
public final static double LOT3Sur6 = 10;
public final static double LOT4Sur6 = 100;
public final static double LOT5Sur6 = 10000;
public final static double LOT6Sur6 = 1000000;
public final static int NOMBRE_ANNEES_MIN = 1;
public final static int NOMBRE_ANNEES_MAX = 1000000;
private ArrayList<Billet> billets;
private ArrayList<Billet> gagnants3Sur6;
private ArrayList<Billet> gagnants4Sur6;
private ArrayList<Billet> gagnants5Sur6;
private ArrayList<Billet> gagnants6Sur6;
//public static Billet ticket;
// Chaque indice du tableau correspond à un numero du loto.
// Le tableau contient le nombre de fois que le numero (correspondant Ã
// l'indice) a été tiré.
private long[] compteurNumeros;
private ArrayList<Integer> indexTrie = new ArrayList<>(Billet.NUMERO_MAX);
public Tirage (int nbAnnee)
{
billets = new ArrayList <Billet> (PERIODE*nbAnnee);
gagnants3Sur6 = new ArrayList <Billet>(0) ;
gagnants4Sur6 = new ArrayList <Billet>(0);
gagnants5Sur6 = new ArrayList <Billet>(0);
gagnants6Sur6 = new ArrayList <Billet>(0);
for(int i = 0 ; i < nbAnnee*PERIODE ; i++)
{
billets.add(new Billet());
}
}
public boolean verifierGagnant(Billet pBillet)
{
boolean ok = false;
for(int i = 0 ; i < pBillet.ticket.size(); i++)
{
if(pBillet.ticket.get(i).nbIdentiques(this.billets.get(i)) > 2)
{
enregistrerBilletGagnant(this.billets.get(i),this.billets.get(i).nbIdentiques(pBillet.ticket.get(i)));
ok = true;
}
}
return ok;
}
private void enregistrerBilletGagnant(Billet combGagnante, int nbIdentiques)
{
switch (nbIdentiques)
{
case 3:
gagnants3Sur6.add(combGagnante);
break;
case 4:
gagnants4Sur6.add(combGagnante);
break;
case 5:
gagnants5Sur6.add(combGagnante);
break;
case 6:
gagnants6Sur6.add(combGagnante);
break;
}
}
private void incrementeNumeros(Billet billet)
{
for(int i = 0; i <= Billet.NB_NUMERO_PAR_BILLET; i++)
{
compteurNumeros[billet.getNumero(i)-1]++;
}
}
private void compteNumerosTirage()
{
for (Billet billet : billets)
{
incrementeNumeros(billet);
}
this.trieCompteurNumero();
}
private void trieCompteurNumero()
{
indexTrie.clear();
ArrayList <Long> tableauTemp = new ArrayList<>(Billet.NUMERO_MAX);
for(int i = 0; i < compteurNumeros.length; i++)
{
tableauTemp.set(i, (long)i);
}
for(int i = 0; i < tableauTemp.size(); i++)
{
if(indexTrie.get(i) < tableauTemp.get(i))
{
indexTrie.set(i, i);
tableauTemp.remove(i);
}
}
}
public long[] tireJusquaGagnant(Billet billet)
{
long [] tableauJusquaGagnant = new long[5];
do
{
this.verifierGagnant(billet);
}
while( gagnants6Sur6.size()==0 );
{
}
return tableauJusquaGagnant;
}
/*public long[] getNumerosPlusPopulaire(int nombre)
{
}
public long[] getNumerosMoinsPopulaire(int nombre)
{
}*/
public int nbGagnants3Sur6()
{
return gagnants3Sur6.size();
}
public int nbGagnants4Sur6()
{
return gagnants4Sur6.size();
}
public int nbGagnants5Sur6()
{
return gagnants5Sur6.size();
}
public int nbGagnants6Sur6()
{
return gagnants6Sur6.size();
}
public double montantGagne3Sur6()
{
return nbGagnants3Sur6() * LOT3Sur6;
}
public double montantGagne4Sur6()
{
return nbGagnants4Sur6() * LOT4Sur6;
}
public double montantGagne5Sur6()
{
return nbGagnants5Sur6() * LOT5Sur6;
}
public double montantGagne6Sur6()
{
return nbGagnants6Sur6() * LOT6Sur6;
}
public double montantDepense()
{
return PRIX_BILLET * billets.size();
}
public double montantGagneTotal()
{
return montantGagne3Sur6() + montantGagne4Sur6() + montantGagne5Sur6()
+ montantGagne6Sur6();
}
public double gainOuPerte()
{
return montantGagneTotal() - montantDepense();
}
public String toString()
{
String s = "";
for (int i = 0; i < billets.size(); i++)
{
s += billets.get(i).toString() + "\n";
}
return s;
}
/**
* Tester les méthodes
*
* @param args inutilisé
*/
public static void main(String[] args)
{
//Tirage test = new Tirage(10);
// test.verifierGagnant(ticket);
Tirage billet1 = new Tirage(1);
Billet test = new Billet();
System.out.println(test.toString());
System.out.println(billet1.toString());
System.out.println(billet1.verifierGagnant(test));
System.out.println( "Gagnant 3/6 :" + billet1.nbGagnants3Sur6());
System.out.println( "Gagnant 4/6 :" + billet1.nbGagnants4Sur6());
System.out.println( "Gagnant 5/6 :" + billet1.nbGagnants5Sur6());
System.out.println( "Gagnant 6/6 :" + billet1.nbGagnants6Sur6());
System.out.println("Montant gagné: " + billet1.gainOuPerte());
}
}
A voir également:
- Ma méthode ne marche pas
- Le client et le serveur ne sont pas compatibles avec une version de protocole ou une méthode de chiffrement ssl commune. ✓ - Forum Réseaux sociaux
- Methode rar - Guide
- Votre appareil est hors connexion. essayez une autre méthode de connexion - Forum Réseaux sociaux
- Le programme ne contient pas de méthode 'main' statique adaptée à un point d'entrée - Forum C#
- Méthode des j excel télécharger ✓ - Forum Excel
1 réponse
Bonjour,
Je viens de reprendre ton code et je n'ai pas forcement tout compris à cause du peu de temps que j'ai passé dessus mais aussi au peu d'info et commentaire qu'il y a.
Ensuite j'ai réussi à faire passer ta fonction, pour cela
Et j'ai modifié cella la même si tu l'utilise jamais c'est juste le parametre qui n'est plus un Billet mais un Tirage.
Et pour finir ta fonction main :
Ce qui me donne une fois compiler la réponse suivante :
Voila je sais pas si c'est ce que tu veux mais j'ai pas regardé dans le détails non plus. Dit moi si cela t'aide sinon je chercherais plus en profondeur
Je viens de reprendre ton code et je n'ai pas forcement tout compris à cause du peu de temps que j'ai passé dessus mais aussi au peu d'info et commentaire qu'il y a.
Ensuite j'ai réussi à faire passer ta fonction, pour cela
public boolean verifierGagnant(Tirage pBillet)
{
boolean ok = false;
for(int i = 0 ; i < pBillet.billets.size(); i++)
{
if(pBillet.billets.get(i).nbIdentiques(this.billets.get(i)) > 2)
{
enregistrerBilletGagnant(this.billets.get(i),this.billets.get(i).nbIdentiques(pBillet.billets.get(i)));
ok = true;
}
}
return ok;
}
Et j'ai modifié cella la même si tu l'utilise jamais c'est juste le parametre qui n'est plus un Billet mais un Tirage.
public long[] tireJusquaGagnant(Tirage billet)
{
long [] tableauJusquaGagnant = new long[5];
do
{
this.verifierGagnant(billet);
}
while( gagnants6Sur6.size()==0 );
{
}
return tableauJusquaGagnant;
}
Et pour finir ta fonction main :
public static void main(String[] args)
{
//Tirage test = new Tirage(10);
// test.verifierGagnant(ticket);
Tirage billet1 = new Tirage(1);
Tirage test = new Tirage(1);
// System.out.println(test.toString());
// System.out.println(billet1.toString());
System.out.println(billet1.verifierGagnant(test));
System.out.println( "Gagnant 3/6 :" + billet1.nbGagnants3Sur6());
System.out.println( "Gagnant 4/6 :" + billet1.nbGagnants4Sur6());
System.out.println( "Gagnant 5/6 :" + billet1.nbGagnants5Sur6());
System.out.println( "Gagnant 6/6 :" + billet1.nbGagnants6Sur6());
System.out.println("Montant gagné: " + billet1.gainOuPerte());
}
}
Ce qui me donne une fois compiler la réponse suivante :
true
Gagnant 3/6 :2
Gagnant 4/6 :0
Gagnant 5/6 :0
Gagnant 6/6 :0
Montant gagné: -32.0
Voila je sais pas si c'est ce que tu veux mais j'ai pas regardé dans le détails non plus. Dit moi si cela t'aide sinon je chercherais plus en profondeur