Eliminate DRM!
Protect your freedom!

I love Java

June 7, 2006 on 10:48 pm | In Java, Linguaggi |

Se le vie del Signore sono infinite, quelle di Java sono di più!
Ho passato le ultime 2 ore (più o meno) a capire con cavolo far compare due stringhe! Vi sembra facile? Vediamo il problema…
Ho un Element/Node ottenuto dal parsing di un file XML, chiamiamolo nodeElement. Questo nodo ha associato ad esso un elemento di testo che è di tipo String. Il nodo in questione è fatto così:
<nomeNodo>testo</nomeNodo>
Il mio problema era comparare il testo con il testo contenuto in un attributo, chiamiamolo attribute sempre di tipo String. Come possiamo fare??? Io ho utilizzato il classico "if" seguito da una condizione contente il CLASSICISSIMO operatore "==". Quindi:

if (nodeElemente.getTextContent() == attribute){
    bla bla bla
}

Prova questo e prova quello, gurda l’output, guarda le chiamate allo stack, niente da fare… Possibile che Java non riesca a comparare due stringhe dello stesso tipo così stupide??? Si! Fino a quando non mi è sorto un dubbio… usare equals()???

if (nodeElement.getTextContent().equals(attribute){
    System.out.println("Per fare una print line ci vuole molto di più! Ci vuole System, ci vuole out e ci vuole println()!");
}

Problema risolto. Grazie James!

return -1

4 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Anche a me all’inizio è sembrata una cosa strana Santana, però ti assicuro che ha una sua logica… Il fatto è che in Java tutto è un oggetto, anche una stringa (infatti String è una classe!), quindi non puoi usare l’operatore == ma devi usare il metodo equals() che confronta ad uno ad uno tutti i campi del primo oggetto con quelli del secondo. Se invece si fosse trattato di un tipo primitivo (come ad esempio int, char, boolean,..) potevi usare == Comunque hai tutta la mia comprensione ;) Ciao!!

    Comment by diana — June 9, 2006 #

  2. Anche a me all’inizio è sembrata una cosa strana Santana, però ti assicuro che ha una sua logica… Il fatto è che in Java tutto è un oggetto, anche una stringa (infatti String è una classe!), quindi non puoi usare l’operatore == ma devi usare il metodo equals() che confronta ad uno ad uno tutti i campi del primo oggetto con quelli del secondo. Se invece si fosse trattato di un tipo primitivo (come ad esempio int, char, boolean,..) potevi usare == . Comunque hai tutta la mia comprensione ;) Ciao!!

    Comment by diana — June 9, 2006 #

  3. santana hanno fatto la maglietta adatta a te! :)

    Comment by fullo — June 12, 2006 #

  4. Che spettacolo!!! Veramente molto bella! Quasi quasi me la compro… oppure aspetto il prossimo LinuxDay per farne stampare un pò :D ;)

    Comment by Santana — June 14, 2006 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^