PDA

Visualizza la versione completa : [java] confronto stringhe


Sandrocchio_0.1
12-01-2005, 19:15
Ho un dubbio, e spero che possiate aiutarmi a risolvervlo dato che sono newbie in questo ambiente.

Raccolto una stringa come parametro sul mio metodo

public static ArrayList getAvail(Props props, Date arr_date, Date dep_date, String room) throws Exception {...

poi decido che in base al risultato del par. room devo settare una variabile precedentemente inizializzata, facendo questo if:

if (room == "1single") {
price = "price_single";
}
else if (room == "2double") {
price = "price_double";
}
else {
price = "price_triple";
}

Il problema che qualsiasi sia il risultato ottengo sempre price = "price_triple".
Il dubbio : devo usare l'"equals"?.
Se s, mi spiegate il perch e mi fate un'esempio sul mio codice.
Grazie

unomichisiada
12-01-2005, 19:49
No dovrebbe andare benissimoanche l' "==".L'equals di serve per forza quando confronti due oggetti di tipo stringa di cui nemmeno uno una costante (le stringhe del tipo "qualcosa" sono costanti stringa ) perch altrimenti confronteresti due riferimenti ad oggetto,in questo caso invece viene effettuata una chiamata implicita del metodo toString dell'oggetto non costante tra i due, quindi va bene.Per scovare il problema ti consiglio di stampare i valori su System.out per vedere cosa va storto

Sandrocchio_0.1
12-01-2005, 19:53
si, quello che sto facendo, ma il riultato che ottengo con il System.out.print di price sempre "price_triple". Quindi non trova nessuna corrispondenza.

unomichisiada
12-01-2005, 20:00
Cerca di scrivere un programmino semplificato (che si compili senza errori) che riproduca esattamente il problema isolandolo e postalo,cos difficile aiutarti

LeleFT
12-01-2005, 20:11
Per confrontare oggetti di tipo String si usa il metodo equals(): non importa se sono stringhe costanti o oggetti... anche la costante "Ciao" un oggetto di tipo String e per confrontarla con un qualsiasi altro oggetto String si usa il metodo equals()!
L'operatore == confronta variabili di tipo primitivo (se di esse si tratta) o puntatori (se si tenta di confrontare oggetti).


if (room.equals("1single")) {
...
} else {
...
}

Ciao. :ciauz:

unomichisiada
12-01-2005, 20:48
Si vero ho detto una stupidata,a volte mi capita.Le mie scuse all'autore del post originale

Sandrocchio_0.1
12-01-2005, 23:52
perfetto!! :unz:
grazie per il vostro aiuto.

Loading