Erreur noSuchElement
harlem49
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis actuellement un cours sur la programmation java et avant de continuer plus, j'essaye de réaliser différents exercices par moi même pour que l'utilisation des trucs de bases devienne plus "naturelle" pour moi.
J'ai réalisé un jeu du PlusouMoins ou l'utilisateur doit deviner un nombre avec le programme qui précise à chaque coup si le nombre à trouver est plus grand ou plus petit que le nombre entré.
Ce programme fonctionnait bien et j'ai voulu ajouter une fonctionnalité de difficulté par le biais d'une méthode et j'obtiens maintenant une erreur Nosuchelement qui me turlupine, je n'arrive pas a trouver pourquoi.
Voilà mon code :
Je suis actuellement un cours sur la programmation java et avant de continuer plus, j'essaye de réaliser différents exercices par moi même pour que l'utilisation des trucs de bases devienne plus "naturelle" pour moi.
J'ai réalisé un jeu du PlusouMoins ou l'utilisateur doit deviner un nombre avec le programme qui précise à chaque coup si le nombre à trouver est plus grand ou plus petit que le nombre entré.
Ce programme fonctionnait bien et j'ai voulu ajouter une fonctionnalité de difficulté par le biais d'une méthode et j'obtiens maintenant une erreur Nosuchelement qui me turlupine, je n'arrive pas a trouver pourquoi.
Voilà mon code :
import java.util.InputMismatchException;
import java.util.Random;
import java.util.Scanner;
public class PlusOuMoins {
public static void Jeu(){
System.out.println("==========> Bienvenue dans le jeu du plus ou moins !<==========");
int continuer = 0;
Scanner sc = new Scanner(System.in);
do{
int nombreAleatoire, nombreMystere = 0, compteur = 0, difficulte=3;
difficulte = ChoixDifficulte();
nombreAleatoire = NombreAleatoire(difficulte);
while (nombreMystere != nombreAleatoire){
System.out.println("\nQuel est le nombre mystère ?");
boolean v = false;
do{
try {
nombreMystere = sc.nextInt();
v = true;
}
catch (InputMismatchException e) {
System.out.println("La valeur saisie n'est pas un entier ou est trop grande");
sc.nextLine();
}
}
while (!v);
compteur++;
if (nombreMystere<nombreAleatoire)
System.out.println("\nLe nombre mystère est plus grand que " + nombreMystere + " !");
else if (nombreMystere>nombreAleatoire)
System.out.println("\nLe nombre mystère est plus petit que " + nombreMystere + " !");
else{
System.out.println("Bravo vous avez trouvé le nombre mystère, c'était " + nombreMystere + " !");
System.out.println("Vous avez utilisé " + compteur + " coups.");
System.out.println("Voulez vous rejouer une petite fois ?\n 1 - Oui \n N'importe quel chiffre pour Non");
v = false;
do{
try{
continuer=sc.nextInt();
v = true;
}
catch (InputMismatchException e){
System.out.println("Merci de saisir un chiffre.");
sc.nextLine();
}
}
while(!v);
}
sc.nextLine();
}}
while (continuer==1);
sc.close();
}
private static int NombreAleatoire (int difficulte){
int max = 0;
if (difficulte == 1)
max = 10;
else if (difficulte == 2)
max = 100;
else if (difficulte == 3)
max = 1000;
else if (difficulte == 4)
max = 10000;
else if (difficulte == 5)
max = 100000;
Random rand = new Random();
int nombreAleatoire = rand.nextInt(max) + 1;
return nombreAleatoire;
}
private static int ChoixDifficulte (){
int difficulte=0;
boolean w = false;
System.out.println("\nChoisissez votre difficulté !\n1 - Facile (entre 1 et 10)\n2 - Moyen (entre 1 et 100)\n3 - Difficile (entre 1 et 1000)");
System.out.println("4 - Très Difficile (entre 1 et 10 000)\n5 - Diabolique (entre 1 et 100 000");
Scanner scan = new Scanner(System.in);
do{
try{
difficulte = scan.nextInt();
w = true;
}
catch(InputMismatchException e){
System.out.println("Merci de rentrer un entier entre 1 et 5 !");
scan.nextLine();
}
}
while(!w || difficulte>5 || difficulte<1 );
scan.close();
return difficulte;
}
}
A voir également:
- Erreur noSuchElement
- Erreur 0x80070643 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
- Comment recuperer whatsapp supprimé par erreur - Guide
1 réponse
Bonjour,
Ton problême est le suivant: en fermant le scanner du ChoixDifficulte, tu bousille ton autre scanner, lui aussi relié à System.in.
Faut mieux utiliser le même scanner:
import java.util.InputMismatchException; import java.util.Random; import java.util.Scanner; public class PlusOuMoins { private static Scanner sc; public static void main(String[] args){ System.out.println("==========> Bienvenue dans le jeu du plus ou moins !<=========="); int continuer = 0; sc = new Scanner(System.in); do { int nombreAleatoire, nombreMystere = 0, compteur = 0, difficulte=3; difficulte = ChoixDifficulte(); nombreAleatoire = NombreAleatoire(difficulte); while (nombreMystere != nombreAleatoire){ System.out.println("\nQuel est le nombre mystère ?"); boolean v = false; do{ try { nombreMystere = sc.nextInt(); v = true; } catch (InputMismatchException e) { System.out.println("La valeur saisie n'est pas un entier ou est trop grande"); sc.nextLine(); } } while (!v); compteur++; if (nombreMystere<nombreAleatoire) System.out.println("\nLe nombre mystère est plus grand que " + nombreMystere + " !"); else if (nombreMystere>nombreAleatoire) System.out.println("\nLe nombre mystère est plus petit que " + nombreMystere + " !"); else{ System.out.println("Bravo vous avez trouvé le nombre mystère, c'était " + nombreMystere + " !"); System.out.println("Vous avez utilisé " + compteur + " coups."); System.out.println("Voulez vous rejouer une petite fois ?\n 1 - Oui \n N'importe quel chiffre pour Non"); v = false; do{ try{ continuer=sc.nextInt(); v = true; } catch (InputMismatchException e){ System.out.println("Merci de saisir un chiffre."); sc.nextLine(); } } while(!v); } sc.nextLine(); }} while (continuer==1); sc.close(); } private static int NombreAleatoire (int difficulte){ int max = 0; if (difficulte == 1) max = 10; else if (difficulte == 2) max = 100; else if (difficulte == 3) max = 1000; else if (difficulte == 4) max = 10000; else if (difficulte == 5) max = 100000; Random rand = new Random(); int nombreAleatoire = rand.nextInt(max) + 1; return nombreAleatoire; } private static int ChoixDifficulte (){ int difficulte=0; boolean w = false; System.out.println("\nChoisissez votre difficulté !\n1 - Facile (entre 1 et 10)\n2 - Moyen (entre 1 et 100)\n3 - Difficile (entre 1 et 1000)"); System.out.println("4 - Très Difficile (entre 1 et 10 000)\n5 - Diabolique (entre 1 et 100 000"); do{ try{ difficulte = sc.nextInt(); w = true; } catch(InputMismatchException e){ System.out.println("Merci de rentrer un entier entre 1 et 5 !"); sc.nextLine(); } } while(!w || difficulte>5 || difficulte<1 ); return difficulte; } }