Souci de comparaison entre 2 String avec substring

Résolu
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008 - 14 mai 2008 à 10:47
khawlatunisienne Messages postés 16 Date d'inscription lundi 4 juillet 2011 Statut Membre Dernière intervention 26 juillet 2011 - 7 mai 2011 à 19:16
Bien le bonjour à vous :

Donc je voudrais avoir quelques renseignements actuellement, je développe une sorte de "msn" perso, en java, dont les trames sont cryptées. Le seul hic, lors de la comparaison entre deux String() le programme plante :

j'ai :
                while(message.substring(x, x+1) != clef.substring(y, y+1))
                              y++ ;

Des que j'arrive a cette ligne ça plante pour tant dans mon raisonnement ça fonctionne.
Je développe sous NetBeans 6.1 et lui me dit :
                 " Comparing Strings using == or != "
Malheureusement je me sers belle et bien de " != " mais voila ça plante....

Merci d'avance pour les réponses que vous me donnerez.

Tant que je serais dans le métier, tu ne seras jamais que le second !

12 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 26
14 mai 2008 à 14:48
Bonjour
Il y a la fonction charAt(int p) qui te renvoit un caractère, a la position p.
Cdt
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 26
14 mai 2008 à 15:11
String a = "ABCDE"
a.chatAt(2) =>C

Cette fonction renvoit un char, pas de String comme la fonction substring.
Du coup tu peux faire la comparaison avec le ==.

Cdt
3
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 21
14 mai 2008 à 12:35
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 21
14 mai 2008 à 12:37
Salut,


il faut fair trés attention quand tu compares deux strings, car == et != se basent sur leurs références, et non pas sur leurs valeurs. De ce fait, il faut passer par equals ou equalsIgnoreCase :


 


str1.equals(str2)


 


voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008
14 mai 2008 à 13:06
Je suis pas sur du rendu de la fonction .equals() dans mon programme car je désire comparer, caractère par caractère, le contenu d'un string par rapport a un autre, je vais essayer.

Merci.

Tant que je serais dans le métier, tu ne seras jamais que le second !
0
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008
14 mai 2008 à 13:14
Je confirme la fonction .equals() ou .equalsIgnoreCase() n'ont pas l'effet escompté.... Zut....

Je sens bien qu'il va falloir que je me fasse ma propre fonction de comparaison....

Tant que je serais dans le métier, tu ne seras jamais que le second !
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 21
14 mai 2008 à 13:33
Salut,
normalement equals compare bien caractére par caractére, si tu fais un "aaa".equals(aab"), il te renverra faux, et un "aaa".equals("aaA") également.

La valeur de retour est un booléen. A part si tu as un besoin particulier, je dirai que cette méthode est celle qui te faut

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008
14 mai 2008 à 13:56
Dans le principe c'est ça que je veux faire mais la fonction equals compare un string en entier et non un caractère du string.
C'est pour cela que j'utilise le != et substring().
Je voulais comparer un a un les caractères, par exemple :

string str1 = "abcde" ;
string str2 = "bade" ;
string str3 = "tuvxyz" ;

ici le "b" de str2 ce trouve a la position (1,2) dans str1.
Donc grâce à ça je peut aller chercher le caractère à la position (1,2) dans str3 et le mettre à la place du "b" dans str2
pour avoir au final, après avoir sortie un à un les caractères de str2, "utyz" dans str2.

C'est ce que je voulais faire mais la comparaison foire et equals me fais la même erreur (enfin ça plante au même endroit).

Tant que je serais dans le métier, tu ne seras jamais que le second !
0
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008
14 mai 2008 à 15:04
C'est du genre substring(int p) ?
Enfin ça à le même fonctionnement ?

Tant que je serais dans le métier, tu ne seras jamais que le second !
0
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008
14 mai 2008 à 15:14
Ok merci du renseignement je test et je vois ce que ça donne.

Tant que je serais dans le métier, tu ne seras jamais que le second !
0
cs_Boowiss Messages postés 12 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 15 mai 2008
14 mai 2008 à 15:42
C'est bon des que j'ai utilisé charAt() mon problème fut résolue merci beaucoup de ta réponse elle m'a était d'une grande utilité ^^

Tant que je serais dans le métier, tu ne seras jamais que le second !
0
khawlatunisienne Messages postés 16 Date d'inscription lundi 4 juillet 2011 Statut Membre Dernière intervention 26 juillet 2011
7 mai 2011 à 19:16
slt
lorsque j'utilise le ".equals" pour comparer 2 chaines de caractères de la base oracle avec le jsp en utilisant eclipse_tomcat, il m'affiche l'erreur suivant:

Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /testerconn.jsp at line 31

28: while(resultSet.next()){
29: String s1=resultSet.getString("LOGIN");
30: String s2=resultSet.getString("MDP");
31: if ((s1.equals(log)) && (s1.equals(pass)))
32: {
33: System.out.println("requette paat3addetetttttttt" );
34: i=i+1;


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


cause mère

java.lang.NullPointerException
org.apache.jsp.testerconn_jsp._jspService(testerconn_jsp.java:85)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

j'attend votre réponse et merci
0