[RISOLTO]Confronto tra stringhe

di il
8 risposte

[RISOLTO]Confronto tra stringhe

Ciao amici volevo chiedervi una cosa:

		String s1 = "ciao";
		String s2 = "ciao";
		
		while(s1 != s2)
		{
			System.out.println("Funziona");
		}
		System.out.println("OK");
in questo pezzo di codice confronto due stringhe.E il funzionamento è corretto
Perche se nella condizione del ciclo while metto una stringa ottenuta col parsing, non funziona??
Vi posto il piccolo pezzo di codice
  String prova = "Servizio notturno";
				   
				   while((titolo = riga.select("div span strong").get(contatore).text()) != prova)
				   {
					   System.out.println(titolo);
					   contatore++;
				   }
Quando titolo assume il valore "Servizio notturno" dovrebbe uscire dal ciclo, invece a me continua a stampare, perché???

8 Risposte

  • Re: [RISOLTO]Confronto tra stringhe

    Non usare == ma

    if( stringa1.equals(stringa2) )
  • Re: [RISOLTO]Confronto tra stringhe

    Ciao Oregon grazie per la risposta!
    Se leggi bene però io non ho usato == ma !=
    Cioè io voglio uscire iterare il ciclo fino a quando le due stringhe sono diverse.
  • Re: [RISOLTO]Confronto tra stringhe

    MacGigi ha scritto:


    Ciao Oregon grazie per la risposta!
    Se leggi bene però io non ho usato == ma !=
    Cioè io voglio uscire iterare il ciclo fino a quando le due stringhe sono diverse.
    allora usa if(!s1.equals(s2)) (ovviamente le s sono le stringhe)
  • Re: [RISOLTO]Confronto tra stringhe

    MacGigi ... ho letto bene ma speravo ci ragionassi un po' tu ...
  • Re: [RISOLTO]Confronto tra stringhe

    Grazie mille avevate perfettamente ragione ... ora funziona!!
  • Re: [RISOLTO]Confronto tra stringhe

    MacGigi ha scritto:


    		String s1 = "ciao";
    		String s2 = "ciao";
    in questo pezzo di codice confronto due stringhe.E il funzionamento è corretto
    Giusto perché tu lo sappia, quelle sono due stringhe "letterali". Il compilatore vede che sono uguali e ne mette solo una nel constant pool. Pertanto s1 e s2 hanno lo stesso valore, il reference allo stesso identico oggetto.

    Quindi qui è ovvio che s1 != s2 è false.
  • Re: [RISOLTO]Confronto tra stringhe

    andbin ha scritto:


    MacGigi ha scritto:


    		String s1 = "ciao";
    		String s2 = "ciao";
    in questo pezzo di codice confronto due stringhe.E il funzionamento è corretto
    Giusto perché tu lo sappia, quelle sono due stringhe "letterali". Il compilatore vede che sono uguali e ne mette solo una nel constant pool. Pertanto s1 e s2 hanno lo stesso valore, il reference allo stesso identico oggetto.

    Quindi qui è ovvio che s1 != s2 è false.
    Capito...per questo a me questa istruzione non funzionava. Grazie a tutti

    Senti ma se voglio stamparli tutti i titoli, e farlo fermare in tempo evitando di generare un'eccezione di tipo IndexOutOfBoundsException, come posso fare?
  • Re: [RISOLTO]Confronto tra stringhe

    MacGigi ha scritto:


    Senti ma se voglio stamparli tutti i titoli, e farlo fermare in tempo evitando di generare un'eccezione di tipo IndexOutOfBoundsException, come posso fare?
    Non è molto chiaro il contesto .... magari apri un'altra discussione specifica e con più dettagli.
Devi accedere o registrarti per scrivere nel forum
8 risposte