PDA

Visualizza la versione completa : [JAVA] Problema con "equals()"


Rei-chan
11-12-2005, 17:06
Salve a tutti,
sto scrivendo una piccola classe in JAVA ma mi sono inceppata e non riesco a capire come mai (il compilatore mi segnala una serie di errori che non sono riuscita a correggere).

Il codice questo:



import. javax.swing.JOptionPane;

public class SiNo {
String inserito = JOptionPane.showInputDialog("Ti piace il gelato? (digita SI per continuare)");

public static boolean ask() {

while (!inserito.equals("SI")) {
if (inserito.equals("SI"))
return true;
return false;
}

}
}


Sostanzialmente il mio programma dovrebbe restituire un valore booleano true se ci che inserisco "SI". E false altrimenti. Il compilatore mi dice: "non-static variable inserito cannot be referenced from a static context" quindi... evidentemente sbaglio ad utilizzare l'equals() come condizione del while?
Purtroppo non ho capito dove sbaglio nella scrittura del codice... :(

Grazie in anticipo!

var
11-12-2005, 18:01
e' necessario per te definire come static il metodo ask?
in tal caso, definisci static anche l'attributo inserito.

ciao

Rei-chan
11-12-2005, 18:42
Ahim necessario :\
Ad ogni modo cosa intendi per rendere statico anche "inserito"?

var
11-12-2005, 18:44
Originariamente inviato da Rei-chan
Ahim necessario :\
Ad ogni modo cosa intendi per rendere statico anche "inserito"?

una cosa del genere:


static String inserito ...

in sostanza e' quello il senso del messaggio del compilatore.

Rei-chan
11-12-2005, 19:33
Uhm, ok. Rimane per il fatto che il compilatore continua a segnalarmi "missing return statement intorno alla 17esima linea :( Praticamente alla seconda parentesi graffa chiusa...

var
11-12-2005, 19:38
se mi spieghi bene cosa dovrebbe eseguire il metodo ask, te lo riscrivo in maniera corretta.

:)

pepe
11-12-2005, 19:59
secondo me il problema sta nel fatto che se alla prima iterazione non entra nel ciclo di while non ha niente da ritornare... secondo me questo while non ti serve a niente... prova a togliere il ciclo while e vedi che ti dovrebbe funzionare... oppure se il while ti serve metti il 'return false' dopo la parentesi.
Ciao.

var
11-12-2005, 20:18
Originariamente inviato da pepe
secondo me il problema sta nel fatto che se alla prima iterazione non entra nel ciclo di while non ha niente da ritornare... secondo me questo while non ti serve a niente... prova a togliere il ciclo while e vedi che ti dovrebbe funzionare... oppure se il while ti serve metti il 'return false' dopo la parentesi.
Ciao.

concordo. :)

Rei-chan
11-12-2005, 20:38
Originariamente inviato da pepe
secondo me il problema sta nel fatto che se alla prima iterazione non entra nel ciclo di while non ha niente da ritornare... secondo me questo while non ti serve a niente... prova a togliere il ciclo while e vedi che ti dovrebbe funzionare... oppure se il while ti serve metti il 'return false' dopo la parentesi.
Ciao.
In effetti mettendo il false DOPO, il programma non segnala pi errori... ma non fa ci che dovrebbe fare.
E per rispondere a var, beh... teoricamente il testo dell'esercizio diceva:


Scrivere un metodo statico Java avente come argomento una String che rappresenta una domanda, che ponga tale domanda all'utente fina a che questo non inseriscce la stringa "si" oppure "no". Il metodo deve ritornare un valore booleano true, se il valore inserito "si" false, se il valore inserito "no".

Ecco qui... il testo del misfatto :(
Grazie a tutti per l'aiuto, intanto..! :ciauz:

anx721
11-12-2005, 20:58
Devi riproporre la domanda ad ogni iterazione:



import. javax.swing.JOptionPane;

public class SiNo {

public static boolean ask(String domanda) {
String risposta = "";
while(! (risposta.equalsIgnoreCase("si") || (risposta.equalsIgnoreCase("no")){
risposta = JOptionPane.showInputDialog(domanda + " (inserisci si o no per continuare)").trim();
}
if(risposta.equalsIgnoreCase("si"))
return true;
else
return false;
}

Loading