Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1683 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  JOptionPane.showInputDialog() ne veux pas partir

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JOptionPane.showInputDialog() ne veux pas partir

n°730923
souliane
Posté le 19-05-2004 à 00:09:18  profilanswer
 

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 ?

mood
Publicité
Posté le 19-05-2004 à 00:09:18  profilanswer
 

n°730932
Jubijub
Parce que je le VD bien
Posté le 19-05-2004 à 00:19:37  profilanswer
 

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...


---------------
Jubi Photos : Flickr - 500px
n°730937
souliane
Posté le 19-05-2004 à 00:29:18  profilanswer
 

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.


Message édité par souliane le 19-05-2004 à 00:35:26
n°730942
Jubijub
Parce que je le VD bien
Posté le 19-05-2004 à 00:38:44  profilanswer
 

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 :


length
 
public int length()
 
    Returns the length of this string. The length is equal to the number of 16-bit Unicode characters in the string.


 
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...


Message édité par Jubijub le 19-05-2004 à 00:39:10

---------------
Jubi Photos : Flickr - 500px
n°730949
souliane
Posté le 19-05-2004 à 00:52:11  profilanswer
 

> 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.

n°730953
Jubijub
Parce que je le VD bien
Posté le 19-05-2004 à 00:55:46  profilanswer
 

souliane a écrit :

> 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.


 
--> 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 :D ;) )


---------------
Jubi Photos : Flickr - 500px
n°730961
souliane
Posté le 19-05-2004 à 01:13:23  profilanswer
 

> 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

n°730969
nraynaud
lol
Posté le 19-05-2004 à 01:21:46  profilanswer
 

Jubijub a écrit :

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...

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
 


---------------
trainoo.com, c'est fini
n°731016
gfive
Posté le 19-05-2004 à 08:46:16  profilanswer
 

Jubijub a écrit :


essaye avec un if...pis tes conditions font un peu doublon : si une chaine est nulle, sa length est de 0, et vice versa...


 
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! :p J'ai pas lu tout le post, je me suis arrêté à l'imfamie! :D


Message édité par gfive le 19-05-2004 à 08:47:25

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  JOptionPane.showInputDialog() ne veux pas partir

 

Sujets relatifs
Faire un tri a partir d'un tableau comment faire sous ASP ?générer une page html à partir d'une page php
probleme d'affichage d'une boite de dialogue avec JOptionPaneExecutez un script sur le serveur a partir d'une page Web
Choix de pattern à partir d'un attribut dans un SchemaAccéder à une base Access à partir de Linux
obtenir des informations à partir d'un PC distantJe veux ajouter un paramètre à une HttpServletRequest...
à partir de exel appeler une macro propre à une data base[Java] Retrouver le code java a partir des .class ?
Plus de sujets relatifs à : JOptionPane.showInputDialog() ne veux pas partir


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR