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

    [JAVA] Problema con "equals()"

    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:
    codice:
    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!
    I'm going under (going under)
    Drowning in you (drowning in you)
    I'm falling forever (falling forever)
    I've got to break through
    I'm going under

    { GOING UNDER - Evanescence }

  2. #2
    e' necessario per te definire come static il metodo ask?
    in tal caso, definisci static anche l'attributo inserito.

    ciao

  3. #3
    Ahimé è necessario :\
    Ad ogni modo cosa intendi per rendere statico anche "inserito"?
    I'm going under (going under)
    Drowning in you (drowning in you)
    I'm falling forever (falling forever)
    I've got to break through
    I'm going under

    { GOING UNDER - Evanescence }

  4. #4
    Originariamente inviato da Rei-chan
    Ahimé è necessario :\
    Ad ogni modo cosa intendi per rendere statico anche "inserito"?
    una cosa del genere:

    codice:
    static String inserito ...
    in sostanza e' quello il senso del messaggio del compilatore.

  5. #5
    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...
    I'm going under (going under)
    Drowning in you (drowning in you)
    I'm falling forever (falling forever)
    I've got to break through
    I'm going under

    { GOING UNDER - Evanescence }

  6. #6
    se mi spieghi bene cosa dovrebbe eseguire il metodo ask, te lo riscrivo in maniera corretta.

    :)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    29
    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.

  8. #8
    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. :)

  9. #9
    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..!
    I'm going under (going under)
    Drowning in you (drowning in you)
    I'm falling forever (falling forever)
    I've got to break through
    I'm going under

    { GOING UNDER - Evanescence }

  10. #10
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Devi riproporre la domanda ad ogni iterazione:

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

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

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.