JOptionPane.showInputDialog() ne veux pas partir - Java - Programmation
Marsh Posté le 19-05-2004 à 00:19:37
je dirais que ca vient du while...à tout les coups le truc qui l'execute se lance X fois, et des fois il doit arriver que les conditions du while se vérifie 2x de suite...
essaye avec un if...pis tes conditions font un peu doublon : si une chaine est nulle, sa length est de 0, et vice versa...
Marsh Posté le 19-05-2004 à 00:29:18
Jubijub a écrit : à tout les coups le truc qui l'execute se lance X fois |
Apres verification il s'agit bien du truc qui lance qui s'execute deux fois, cette portion de code n'est donc pas incriminé
Merci pour m'avoir aidé a resoudre le probleme !
Jubijub a écrit : pis tes conditions font un peu doublon : si une chaine est nulle, sa length est de 0, et vice versa... |
Es tu sur de ca ?! A mon avis, ce n'est pas pareil dans un sens comme dans l'autre.
Marsh Posté le 19-05-2004 à 00:38:44
explique moi bien pourquoi...
une string à null possède 0 char, donc sa length est 0... = "" si tu préfères...
maintenant, une string ne contenant aucun char est nulle...
Citation : |
Tiré de la Javadoc 1.4.2
--> pour une raison X, ton while s'execute 2x...essaye avec un IF : si le bug persiste, c que ton truc est appellé 2x...sinon, c que c le while qui s'execute 2x, et que donc les conditions du while ne changent pas assez vite pour éviter ça...
Marsh Posté le 19-05-2004 à 00:52:11
> une string à null possède 0 char, donc sa length est 0... = "" si tu
> préfères... maintenant, une string ne contenant aucun char est
> nulle...
Une String à null possède zéro caracteres parsqu'elle n'existe pas. En appelant length() on se retrouve avec un NullPointerException.
> pour une raison X, ton while s'execute 2x...essaye avec un IF : si le
> bug persiste, c que ton truc est appellé 2x...
Oui c'était ça.
Marsh Posté le 19-05-2004 à 00:55:46
souliane a écrit : > une string à null possède 0 char, donc sa length est 0... = "" si tu |
--> oui donc c pas la peine de tester les 2, l'un impliquant l'autre...Teste tu verras...
--> ct sur et certain le coup du while (pour tout dire j'ai eu le bug de matin même, donc ct frais dans ma tete )
Marsh Posté le 19-05-2004 à 01:13:23
> oui donc c pas la peine de tester les 2, l'un impliquant
> l'autre...Teste tu verras...
Mmmm... et tu as testé toi ?
Moi oui ben c'est pas comme tu dis !
Voila exactement comment ca marche :
String a = "";
if(a==null)
System.out.println("a est null" );
else
System.out.println("a est pas null" );
String b = null;
System.out.println(b.length());
Ca ecrit "a est pas null" et java.lang.NullPointerException
Marsh Posté le 19-05-2004 à 01:21:46
Jubijub a écrit : explique moi bien pourquoi... |
heeeeeeeerrk
CECI EST UNE VASTE CONNERIE garde ton test.
faire null.lenght() lève une NullPointerException (appelée NPE dans l'intimitée).
par contre, avec le test s == null || s.length() == 0, on est sûr qu'il n'y aura pas de NPE, car le || est spécifié comme "à court circuit" dans la référence :
http://java.sun.com/docs/books/jls [...] html#54532
Marsh Posté le 19-05-2004 à 08:46:16
Jubijub a écrit : |
Aaaaaah, quelle horreur!! Non mais ça va pas????
Quand tu fais
String s = "";
ben s != null;
et s.length() == 0 est vrai!!
Alors que String s;
s == null est vrai,
s.length() --> NullPointerException.
non mais.
Edit : oups, y'avait déjà nraynaud qui avait réagi! J'ai pas lu tout le post, je me suis arrêté à l'imfamie!
Marsh Posté le 19-05-2004 à 00:09:18
Bonjour,
J'ai une méthode qui s'occupe de récupérer une chaine de caractere saisie au clavier par l'utilisateur, ceci à l'aide d'un JOptionPane. Quelque chose dans ce genre :
while (s==null || s.length() == 0) {
s = JOptionPane.showInputDialog(c,"Entrer votre nom :" );
}
Pourquoi cette boite de dialogue s'affiche presque tous le temps deux fois de suite ?