Projet loto
TokTokos
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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
- Application loto azerbaïdjan ✓ - Forum Loisirs / Divertissements
- Loto Autriche, Bulgarie et Azerbaïdjan [SUJET GROUPÉ] . ✓ - Forum Loisirs / Divertissements
- Tableau de combinaison loto 5/90 - Forum Logiciels
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
}
}