Voila, j'utilise une JoptionPane.showInputDialog pour que l'utilisateur saisisse la largeur de la grille qu'il veut utiliser. Et j'essaye d'empêcher toute saisie problématique. Sauf que çe ne se passe pas comme prévu.
Voici le code:
Je fais le test, en saisissant des nombres corrects, aucun problème.
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 public void créerGrilleAléatoirement() { boolean saisiecorrecte=false; /* * Saisie de la largeur de la grille */ String largeurgrille = JOptionPane.showInputDialog(this, "Entrer une largeur de grille comprise entre 3 et 15 "); while(saisiecorrecte==false){ for(int i=0;i<largeurgrille.length();i++){ if(largeurgrille=="" || largeurgrille.charAt(i)<48 || largeurgrille.charAt(i)>57){ JOptionPane.showMessageDialog(this, "La largeur que vous avez saisie est invalide, veuillez effectuer une nouvelle saisie.", "avertissement", JOptionPane.WARNING_MESSAGE); largeurgrille = JOptionPane.showInputDialog(this, "Entrer une largeur de grille comprise entre 3 et 15 "); } else i++; } if(Integer.parseInt(largeurgrille)<3 || Integer.parseInt(largeurgrille)>15){//ici sort une NumberFormatException JOptionPane.showMessageDialog(this, "La largeur que vous avez saisie est invalide, veuillez entrer une largeur comprise entre 3 et 15", "avertissement", JOptionPane.WARNING_MESSAGE); largeurgrille = JOptionPane.showInputDialog(this, "Entrer une largeur de grille comprise entre 3 et 15 "); } else { saisiecorrecte=true; } } saisiecorrecte=false; }
Si je saisis un caractère (autre qu'un espace) suivi de n'importe quoi, aucun problème, l'utilisateur doit refaire une saisie.
Si je saisis un chiffre suivi d'un espace, j'ai une Exception qui sort.
Si je saisis un espace suivi de n'importe quoi, j'ai une Exception qui sort.
Et enfin, si je saisis un chiffre suivi d'un caractère quelconque, j'ai une Exception qui sort.
Je ne comprends pas pourquoi ce comportement. Normalement, avec mon for et les charAt(i), je vérifie bien que les caractères saisis sont bien uniquement des chiffres, si ce n'est pas le cas, je redemande une saisie, sinon, je passe au caractère suivant. Enfin, ça c'est ce que je veux...
Une idée?
Partager