Bonjour,

je débute dans la programmation java et j'utilise "Le Livre de Java premier langage" pour commencer à me former.

J'ai un problème avec la fonction scanner. Le code que j'utilise est identique au corrigé du livre mais quand je lance le programme, j'obtiens : Exception in thread "main" java.util.NoSuchElementException.

Après pas mal de recherches sur différents forums, j'ai compris que le fait que le scanner soit appelé plusieurs fois doit créer le problème mais je n'arrive pas à le résoudre. Quelqu'un aurait une réponse à m'apporter ?
(je travaille actuellement avec un ordinateur sur lequel je ne peux pas installer de logiciel, je tape mes codes sur jdoodle avec le compiler ide....dans l'attente de m'en acheter un sur lequel je pourrai installer NetBeans ou Eclipse).

Ci-dessous le programme principal :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
import java.util.Scanner;
 
public class Projet {
 
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		byte choix = 0;
		String numéroLu = "";
	    Scanner LectureClavier = new Scanner(System.in);
Compte c = new Compte();
do {
choix = menuPrincipal();
switch (choix) {
case 1 : c.créerCpte();
break;
case 2 : 
	System.out.println(c.numéroCpte);
System.out.print("Quel compte souhaitez vous afficher ? :");
numéroLu = LectureClavier.next();
if (numéroLu.equalsIgnoreCase(c.numéroCpte)) c.afficherCpte();
else System.out.println("Ce compte n'existe pas");
break;
case 3 : System.out.println("Option non activée");
break;
case 4 : sortir();
break;
case 5 : alAide();
break;
default : System.out.println("L'option n'existe pas");
}
}
while (choix !=4);
}
 
	//Affiche le menu principal, retourne la valeur de l'option choisie
	public static byte menuPrincipal() {
	   	byte tmp;
	   	Scanner LectureClavier = new Scanner(System.in);
		System.out.println("1. Création d'un compte :");
		System.out.println("2. Affichage d'un compte :");
		System.out.println("3. Ecrire une ligne comptable :");
		System.out.println("4. Sortir");
		System.out.println("5. De l'aide");
		System.out.println();
		System.out.println("Votre choix : ");
		tmp= LectureClavier.nextByte();
		return tmp;
	}
	public static void sortir () {
		System.out.println("Au revoir et à bientot");
		System.exit(0);
	}
	public static void alAide() {
		System.out.println("Option 1 : Pour créer un compte Courant entrer C ");
		System.out.println("Pour créer un compte Joint entrer J");
		System.out.println("Pour créer un compte épargne entrer J ");
		System.out.print("Puis, entrer le numero du compte, et");
		System.out.println(" sa première valeur créditée ");
		System.out.println("Dans le cas d'un compte épargne, entrer le taux ");
		System.out.println("Option 2 : Le système affiche les données du compte choisi ");
		System.out.println("Option 3 : Ecrire une ligne compable");
		System.out.println("Option 4 : Pour quitter le programme");
		System.out.println("Option 5 : Pour afficher de l'aide");
	}
}
La classe Compte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
import java.util.Scanner;
 
public class Compte {
 
	public byte choix;
	public String typeCpte;
	public String numéroCpte=("");
	public double val_courante = 0.0, taux = 0.0;
	public Scanner LectureClavier=new Scanner(System.in);
 
 
	public void créerCpte() {
		char tmp;
		do {
			System.out.print("Type du compte [Types possibles :");
			System.out.print("C(ourant), J(oint), E(pargne)] :");
			tmp = LectureClavier.next().charAt(0);
		} while (tmp !='C' && tmp != 'J' && tmp !='E');
		switch (tmp){
		case 'C' : typeCpte = "Courant";
		break;
		case 'J' : typeCpte = "Joint";
		break;
		case 'E' : typeCpte = "Epargne";
		break;
			}
	System.out.print("Numéro de compte : ");
		numéroCpte = LectureClavier.next();
		System.out.print("Première valeur créditée :");
		val_courante = LectureClavier.nextDouble();
		if (tmp == 'E') {
			System.out.print("Taux de placement :");
			taux = LectureClavier.nextDouble();
				}
	}
	public void afficherCpte() {
			System.out.print("Le compte n° : "+ numéroCpte + "est un compte ");;
			System.out.println(typeCpte);
			if (typeCpte.equalsIgnoreCase ("Epargne")) {
				System.out.println(" dont le taux est "+ taux);
			System.out.println("Valeur courante : "+val_courante);
		}
	}
}
Merci d'avance pour vos réponses. J'espère que les codes se sont bien intégrés au message.