Souci de comparaison entre 2 String avec substring [Résolu]

cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 10:47 - Dernière réponse : khawlatunisienne 16 Messages postés lundi 4 juillet 2011Date d'inscription 26 juillet 2011 Dernière intervention
- 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 !
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
cs_laurent1024 987 Messages postés mardi 31 mai 2005Date d'inscription 30 août 2012 Dernière intervention - 14 mai 2008 à 14:48
3
Merci
Bonjour
Il y a la fonction charAt(int p) qui te renvoit un caractère, a la position p.
Cdt

Merci cs_laurent1024 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de cs_laurent1024
Meilleure réponse
cs_laurent1024 987 Messages postés mardi 31 mai 2005Date d'inscription 30 août 2012 Dernière intervention - 14 mai 2008 à 15:11
3
Merci
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

Merci cs_laurent1024 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 70 internautes ce mois-ci

Commenter la réponse de cs_laurent1024
Commenter la réponse de indiana_jules
indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention - 14 mai 2008 à 12:37
0
Merci
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
Commenter la réponse de indiana_jules
cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 13:06
0
Merci
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 !
Commenter la réponse de cs_Boowiss
cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 13:14
0
Merci
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 !
Commenter la réponse de cs_Boowiss
indiana_jules 750 Messages postés mardi 9 mars 2004Date d'inscription 23 décembre 2008 Dernière intervention - 14 mai 2008 à 13:33
0
Merci
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
Commenter la réponse de indiana_jules
cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 13:56
0
Merci
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 !
Commenter la réponse de cs_Boowiss
cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 15:04
0
Merci
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 !
Commenter la réponse de cs_Boowiss
cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 15:14
0
Merci
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 !
Commenter la réponse de cs_Boowiss
cs_Boowiss 12 Messages postés mercredi 14 mai 2008Date d'inscription 15 mai 2008 Dernière intervention - 14 mai 2008 à 15:42
0
Merci
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 !
Commenter la réponse de cs_Boowiss
khawlatunisienne 16 Messages postés lundi 4 juillet 2011Date d'inscription 26 juillet 2011 Dernière intervention - 7 mai 2011 à 19:16
0
Merci
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
Commenter la réponse de khawlatunisienne

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.