Problème fonction java

Signaler
-
KX
Messages postés
16116
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2020
-
Bonjour,

Je dois faire un exercice dont l'objectif est d'utiliser une fonction pour éviter de recopier deux fois les instructions qui permettent d'attendre le code 4242. Mais avec ce code, les erreurs suivantes s'affichent :
Exception in thread "main" java.util.NoSuchElementException
at algorea.Scanner.next(Scanner.java:56)
at algorea.Scanner.nextInt(Scanner.java:116)
at Main.demanderCode(main.java:13)
at Main.demanderCode(main.java:20)

Dans l'exercice, algorea.Scanner équivaut à algorea java.util.Scanner. Avez-vous une solution ? Merci :)

import algorea.Scanner;

class Main {

static Scanner entrée = new Scanner(System.in);

static void demanderCode() {
System.out.println("Entrez le code :");
int code = entrée.nextInt();

if (code == 4242) {
System.out.println("Encore une fois.");
int code2 = entrée.nextInt();
if (code2 == 4242) {
System.out.println("Bravo.");
} else {
demanderCode();
}
} else {
demanderCode();
}
}

public static void main(String[] args) {
demanderCode();


}

}



Configuration: Windows / Chrome 76.0.3809.100

2 réponses

Messages postés
16116
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2020
2 539
Bonjour,

Remplaces
import algorea.Scanner;
par
import java.util.Scanner;
et ce sera bon.
Messages postés
27682
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 février 2020
2 142
Bonjour,

Déjà... pour poster ton code, merci à l'avenir d'utiliser les BALISES DE CODE.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite, évites d'utiliser des caractères accentués dans le nom de tes variables (ou de fonctions )

Et enfin, tu fais un println (donc tu as un saut de ligne)
Je pense que tu dois faire un premier nextLine avant de récupérer la valeur du code.

un truc du genre :
System.out.println("Entrez le code :");
entree.nextLine();
int code = entree.nextInt();