Bonjour,
Dans une saisie en boucle avec un "scan.nextInt()", lorsqu'une erreur est détectée (si par exemple on entre une lettre au lieu d'un chiffre), le programme passe bien par le bloc "catch" MAIS il boucle ensuite sans fin et ne permet pas de saisir un autre chiffre.
Exemple d'exécution du programme:
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 import java.util.*; public class Main { public static void main(String[] args) { Random r = new Random(); Integer v1=0,v2=0,rep=0; double nbb=0,nbf=0,points=0; Scanner scan = new Scanner(System.in); do{ v1=r.nextInt(100); v2=r.nextInt(100); System.out.print(v1+" + "+v2+" = ? "); try{ rep=scan.nextInt(); if(rep==(v1+v2)) { nbb++; System.out.println(" BRAVO !!! ("+nbb+"/"+(nbb+nbf)+" soit "+(nbb/(nbb+nbf))*10+"/10"); } else{ nbf++; System.out.println("FAUX, la bonne réponse est "+(v1+v2)); } } catch(InputMismatchException e){ System.out.println("NumberFormatException: vous n'avez pas entré un double !"+rep); rep=1; } }while(rep!=0); } }
13 + 36 = ? 49
BRAVO !!! (1.0/1.0 soit 10.0
15 + 24 = ? 3.6
NumberFormatException: vous n'avez pas entré un double !49
33 + 26 = ? NumberFormatException: vous n'avez pas entré un double !1
15 + 58 = ? NumberFormatException: vous n'avez pas entré un double !1
58 + 98 = ? NumberFormatException: vous n'avez pas entré un double !1
76 + 52 = ? NumberFormatException: vous n'avez pas entré un double !1
Etc... etc... etc...
Je souhaiterai, dans le cas d'une erreur, que le programme passe au calcul suivant. Pour l'instant il boucle sans fin sans permettre d'entrer une réponse !
(Et si je met rep=0 il sort de la boucle).
MERCI pour vos conseils
Partager