Projet loto
TokTokos
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
A voir également:
- Projet loto
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Tableau de combinaison loto 5/90 - Forum Logiciels
- Application loto azerbaïdjan ✓ - Forum Loisirs / Divertissements
- Loto Autriche, Bulgarie et Azerbaïdjan [SUJET GROUPÉ] . ✓ - Forum Loisirs / Divertissements
1 réponse
Bonjour,
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 :
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 :
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 } }