2011-10-16 10 views
20

Ho cercato di creare un orologio che l'utente possa impostare. Volevo che all'utente venissero poste delle domande e loro rispondessero con parole come si o no. L'ho fatto per cose che non cambiano usando questo codice, come se l'utente desidera che i secondi vengano visualizzati o meno, ma non funziona altrettanto bene quando voglio che la stringa cambi, diciamo da AM a PM quando le ore supera 12. Ecco quello che sto usando:Come si controlla se una stringa non è uguale a un oggetto o un altro valore di stringa in java?

System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in); 
    TimeOfDayStringQ = TimeOfDayQ.next(); 

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) { 
     System.out.println("Sorry, incorrect input."); 
     System.exit(1); 
    } 

    ... 

    if(Hours == 13){ 
     if (TimeOfDayStringQ.equals("AM")) { 
      TimeOfDayStringQ.equals("PM"); 
     } else { 
      TimeOfDayStringQ.equals("AM"); 
     } 
       Hours = 1; 
     } 
    } 

Ogni volta che entro in nulla quando mi spinge, se ho messo AM, PM, o altro saggio, mi dà l'errore che ho scritto e poi esce . Quando rimuovo la sezione di codice che termina il programma con l'errore, non cambierà la stringa da AM a PM quando l'ora è uguale a 13. Grazie per il vostro aiuto, è molto apprezzato.

+3

come un'osservazione, per evitare confusione, le variabili Java dovrebbe iniziare con le lettere minuscole. –

risposta

25

modificare il codice per:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in); 
TimeOfDayStringQ = TimeOfDayQ.next(); 

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <-- 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

... 

if(Hours == 13){ 
    if (TimeOfDayStringQ.equals("AM")) { 
     TimeOfDayStringQ = "PM"; // <-- 
    } else { 
     TimeOfDayStringQ = "AM"; // <-- 
    } 
      Hours = 1; 
    } 
} 
13

si vorrà utilizzare & & per vedere che non è uguale a "AM" e non uguale a "PM"

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

per intenderci si può anche fare

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){ 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

per avere la frase not (one or the other) nel codice (ricorda le parentesi (silenziose))

+0

Grazie mille. Sono un po 'nuovo per Java e questo è probabilmente il motivo per cui ho commesso un errore così semplice. Grazie mille. – Pillager225

1

Cambia la tua || a & & quindi uscirà solo se la risposta NON è "AM" né "PM".

Problemi correlati