Projet loto
Bonjour, j'ai un problème avec mon programme sur un jeu loto, ou l'utilisateur doit entrer autant de nombres qu'il souhaite dans la console et par la suite, il doit y avoir un tirage de nombres aléatoires (si l'utilisateur a entré 6 nombres dans la console alors il y aura 6 nombres aléatoires et les nombres ne doivent pas se répéter.
Mon code compile sans soucis cependant il m'affiche ceci :
et le code et le suivant :
ps : je suis nouveau dans le java donc je n'arrive pas à résoudre ce problème.
Si quelqu'un peut m'aider ce serait génial.
Merci d'avance
Mon code compile sans soucis cependant il m'affiche ceci :
Numéros du joueur : [] Numéros du tirage : [] Nombre de bons numéros : 0 ***** JACKPOT *****
et le code et le suivant :
import java.util.Arrays;
public class Loto {
public static void main(String[] args){
int nbChoisis[] = new int[args.length]; //tableau contenant les nombres utilisés par l'utilisateur
int nbLoto[] = new int[args.length]; //tableau contenant les numéros tirés au sort
//int nbLoto[] = {1,2,3,4,5}; //Tableau pour tester le jackpot
for (int a = 0; a < nbChoisis.length; a++){ // on remplit les deux tableaux
try { // on vérifie que l'utilisateur a bien rentré des entiers
nbChoisis[a] = Integer.parseInt(args[a]); // si tout vas bien on remplit le tableau nbChoisis avec les données que l'utilisateur a inséré
} catch (NumberFormatException e) {
break; // si on a une erreur c'est donc que l'utilisateur n'a pas entré seulement des entiers, on sort donc de la boucle et on affiche le message d'erreur situé à la fin du programme
}
nbLoto[a] = (int)(Math.random()*49+1); // la méthode random donne un chiffre qui est entre 0 et 1 donc on le multiplie par 49 pour avoir un nombre entre 0 et 49 et ensuite on l'additionne à 1 pour avoir un nombre entre 1 et 50. De plus on le force à être un entier
}
int nbEgal = 0; // on definie une variable pour vérifier que tout les nombres entrés par l'utilisateur sont differents
for (int n = 0; n < nbChoisis.length; n++){ // on vérifie que toutes les valeurs entrées par l'utilisateur sont différentes
for (int m = 0; m < nbChoisis.length; m++){
if (nbChoisis[n] == nbChoisis[m]){
nbEgal = nbEgal + 1;
}
}
}
int nbCorrect = 0; // on définit une variable qui nous permettera de voir si les chiffres entrés par l'utilisateur sont contenus dans l'intervalle 0 , 50
for (int i = 0; i < nbChoisis.length; i++){
if (nbChoisis[i] > 0 && nbChoisis[i] <= 50){
nbCorrect = nbCorrect + 1; // Si le numéros est contenu dans l'intervalle on incrémente nbCorrect
}
}
if (nbCorrect == nbChoisis.length && nbChoisis.length <= 5 && nbEgal == 0) { // On vérifie que tout les nombres sont contenus dans l'intervalle et que l'utilisateur a entré maximum 5 numéros
int nbGagnants = 0; // On défini une variable nous permettant de compter le nombre de numéros gagnants
for (int x = 0; x < nbChoisis.length; x++){
for (int y = 0; y < nbChoisis.length; y++){
if (nbChoisis[x] == nbLoto[y]){
nbGagnants = nbGagnants + 1; // on incrémente la variable nbGagnants si le numéro est gagnants
}
}
}
boolean jackpot = false; // On déclare un boolean Jackpot pour savoir si l'utilisateur a eu e jackpot ou non on l'initialise à non
if (nbGagnants == nbChoisis.length){ // on vérifie si la variables nbGagnants et égale au nombre total de numéros entrés par l'utilisateur
jackpot = true; // si oui on dit que jackpot est true
}
// on trie les tableaux
Arrays.sort(nbChoisis);
Arrays.sort(nbLoto);
// on affiche les différentes informations
System.out.println("Numéros du joueur : " + Arrays.toString(nbChoisis));
System.out.println("Numéros du tirage : " + Arrays.toString(nbLoto));
System.out.println("Nombre de bons numéros : " + nbGagnants);
if (jackpot == true){ // si l'utilisateur a le jackpot on affiche le message suivant
System.out.println("***** JACKPOT *****");
}
} else {
//si l'utilisateur entre des chiffres qui ne correspondent pas à l'intervalle 0 , 50 ou si l'utilisateur a entré plus de 5 chiffres on affiche ce message d'erreur
System.out.println("Vous devez entrer des nombres entiers entre 0 et 50 et maximum 5 numéros différents.");
}
}
}
ps : je suis nouveau dans le java donc je n'arrive pas à résoudre ce problème.
Si quelqu'un peut m'aider ce serait génial.
Merci d'avance
1 réponse
-
ModérateurBonjour,
L'affichage que tu obtiens est lié au fait que args est vide, il n'y a aucun nombre saisi par l'utilisateur, c'est une vérification que tu devrais faire dès le début du programme.
Pour remplir les valeurs dans args tu peux faire comme ceci :java Loto 1 2 3 4 5
Evidemment tu as d'autres erreurs ensuite.
Voici un exemple pour le début du programme, où tu dois contrôler les données saisies par l'utilisateur :public class Loto { private static final int NOMBRE_MIN_VALEURS = 1; private static final int NOMBRE_MAX_VALEURS = 5; private static final int VALEUR_MIN = 1; private static final int VALEUR_MAX = 50; private static final String ERREUR_SAISIE = String.format("Vous devez saisir entre %d et %d nombres entiers, tous différents, compris entre %d et %d.", NOMBRE_MIN_VALEURS, NOMBRE_MAX_VALEURS, VALEUR_MIN, VALEUR_MAX); public static void main(String[] args) { final int nombreValeursChoisies = args.length; if (nombreValeursChoisies < NOMBRE_MIN_VALEURS || nombreValeursChoisies > NOMBRE_MAX_VALEURS) { System.err.println(ERREUR_SAISIE); System.err.println("Erreur : " + nombreValeursChoisies + " valeurs saisies !"); return; } int[] valeursChoisies = new int[nombreValeursChoisies]; for (int i = 0; i < nombreValeursChoisies; i++) { int valeurChoisie; try { valeurChoisie = Integer.parseInt(args[i]); } catch (Exception exception) { System.err.println(ERREUR_SAISIE); System.err.println("Erreur : " + args[i] + " n'est pas un nombre entier"); return; } if (valeurChoisie < VALEUR_MIN || valeurChoisie > VALEUR_MAX) { System.err.println(ERREUR_SAISIE); System.err.println("Erreur : " + valeurChoisie + " n'est pas valide"); return; } for (int j = 0; j < i; j++) { if (valeursChoisies[j] == valeurChoisie) { System.err.println(ERREUR_SAISIE); System.err.println("Erreur : " + valeurChoisie + " est saisi plusieurs fois"); return; } } valeursChoisies[i] = valeurChoisie; } // une fois que tout est vérifié tu peux commencer le programme } }