Newsgroup: it.comp.java
Titolo: Confronto tra stringhe: non funza!!

Mi spiegate perchè due stringhe che con una println sono identiche
risultano diverse con un test == ed anche con la
Srting.equals(String)???
Sto diventando pazzo.
Grazie infinite!!
--
Bye,
  Dario
ICQ: 
http://wwp.mirabilis.com/11871099
Remove anti-spam from e-mail address

 Srting.equals(String)???
String.compareTo(String)
man java :-))
-- 
. Simone Caldana - Technical Staff Member & Student            .
. Dipartimento di Informatica - Universita' di Torino          .
. Tel. 
+39 011 6706725
     E-Mail : 
Simone....@di.unito.it
 .
.      
+39 011 6706778
     Web URL: 
http://i.am/caldana
        .
.                                                              .
.                - Never been top poster! -                    .

 Srting.equals(String)???
Con == e' normale che risultino diverse, perche' sono due oggetti
diversi.
Se risultano diverse anche con equals vuol dire che hanno 
contenuto diverso, e quindi probabilmente c'e' qualche spazio
davanti  o dietro che ti sfugge nella printaln.
Prova 
s1.trim().equals(s2.trim())
Ciao,
  Marina

 Srting.equals(String)???
Bho :)
Forse le due stringhe sono leggermente diverse anche se appaiano uguali
in output (magari c'e' un blank in coda).
Prova a fare cosi' per controllare
System.out.println("*" + stringa + "*");
oppure puoi fare una stringa.getBytes() di entrambe e poi stampare il
codice ascii di ogni carattere per vedere se sono davvero uguali.
Il fatto che con == ti restituisca false e', tranne casi particolari,
giusto; se le stringhe sono davvero uguali, e se equals() fallisce,
posso solo consigliarti di provare con intern().
Ti copio un esempio dell' intern preso dalla ml della JDC.
        public class intern {
                public static void main(String args[])
                {
                        String a = "abc"; 
                        String b = "abc";
                        if (a == b)
                                System.out.println("== #1");    // true
                        if (a.equals(b))
                                System.out.println("equal #1"); // true
 
                        a = "abcd";
                        b = "abc";
                        b += "d";
                        if (a == b)
                                System.out.println("== #2");    // false
                        if (a.equals(b))
                                System.out.println("equal #2"); // true
 
                        a = a.intern();
                        b = b.intern();
                        if (a == b)
                                System.out.println("== #3");    // true
                        if (a.equals(b))
                                System.out.println("equal #3"); // true
                }
        }
Ciao
-- 
...almost any game *CAN* be imagined to be an RPG, but a "real RPG"
would facilitate role-playing, not require spending most of your effort
on sustaining your SOD.
M. Hughes

--
L'oggetto stringa non è come gli oggetti semplici int, short, byte, float,
double che scrivono direttamente il valore nella cella di memoria cui sono
assegnati. La stringa, come altri oggetti più complessi è una referenza ad
un'altra cella di memoria, quindi se usi l'operatore == non fai altro che
confrontare le referenze. Questo ti dà vero solo se le referenze puntano
allo stesso oggetto. Per confrontare i contenuti di due stringhe devi usare
il metodo String.equals(String). Se anche questo ritorna valore falso vuol
dire che le stringhe sono diverse, magari c'è un carattere non stampabile
che ti tira dei brutti tiri.
Ciao
----------------------------------------------------------------------------
-----------------------------------------------------------------------
Windows 98: 16 Millions of lines of code that will never be debugged
----------------------------------------------------------------------------
-----------------------------------------------------------------------
bo...@iol.it


Per quanto riguarda == é presto detto: le due stringhe sono due
istanze distinte della classe String e di conseguenza risultano
diverse tra loro. Che risultino diverse anche con equals mi fa pensare
che: 
1. Vi siano differenze del tipo maiuscolo/minuscolo (nel qual caso
utilizza equalsIgnoreCase);
2. Vi siano differenze in caratteri non stampabili!
Vedi tu!
Ciao!
Matteo!!!

man java :-))
Che dice:
The result is zero if the strings are equal; compareTo returns 0
exactly when the equals(Object) method would return true. 
Perciň anche equals() dovrebbe funzionare... Vedrň di fare piů
attenzione per scoprire il problema.
Comunque grazie. :)
