Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [java] confronto stringhe

    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
    codice:
    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:
    codice:
    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

  2. #2
    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
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    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.

  4. #4
    Cerca di scrivere un programmino semplificato (che si compili senza errori) che riproduca esattamente il problema isolandolo e postalo,così è difficile aiutarti
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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).
    codice:
    if (room.equals("1single")) {
       ...
    } else {
       ...
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Si è vero ho detto una stupidata,a volte mi capita.Le mie scuse all'autore del post originale
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    perfetto!!
    grazie per il vostro aiuto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.