2017-10-26 2 views
0

Ich habe mich umgesehen und habe keine Fragen gefunden, die direkt für mein Problem beantwortet wurden, wenn ich falsch liege, tut mir leid. Ich schreibe ein Programm, das Ihre Geburtsinformation, Jahr, Monat, Tag, Stunde, Minute aufnehmen soll und dann fragen soll, ob Sie es wieder tun möchten, aber eine Methode und eine Schleife verwenden, bis ein J/N eingegeben wird.Java - Methode für die Schleife, bis ein Y oder N eingegeben wird

Mein Problem ist nicht imstande, die Methode zu erhalten, um das J/N aufzunehmen und das Programm zu beenden, sowie das Ende, wenn ein N eingegeben wird.

Ich denke, es gibt eine Weile oder eine Art von Schleife, die in der Methode sein muss, aber ich habe eine harte Zeit, dies herauszufinden.

Alle meine anderen Methoden arbeiten außer diesem, jede Hilfe würde geschätzt werden, danke.

Dies ist der Code, den ich jetzt für meine Methode haben:

public static boolean getYNConfirm(Scanner pipe, String prompt) 
{ 

    String choice=""; 

    System.out.println(prompt); 

     choice = pipe.nextLine(); 

     if(choice.equalsIgnoreCase("Y")) 
     { 
      return true; 
     } 
     else 
     { 
      return false;  
     } 


} 

Und das ist der Code für mein Hauptprogramm:

public static void main(String[] args) 
{ 
    int year, month, day, hour, minutes; 
    String msg=""; 
    boolean done = false; 
    Scanner in = new Scanner(System.in); 

    while(!done) 
    { 

    year = SafeInput.getIntInRange(in, "Enter the year you were born: ", 1965, 2000); 

    month = SafeInput.getIntInRange(in, "Enter your month of birth: ", 1, 12); 
    switch (month) 
    { 
     case 1: 
     msg = "January"; 
     break; 
     case 2: 
     msg = "February"; 
     break; 
     case 3: 
     msg = "March"; 
     break; 
     case 4: 
     msg = "April"; 
     break; 
     case 5: 
     msg = "May"; 
     break; 
     case 6: 
     msg = "June"; 
     break; 
     case 7: 
     msg = "July"; 
     break; 
     case 8: 
     msg = "August"; 
     break; 
     case 9: 
     msg = "Septemeber"; 
     break; 
     case 10: 
     msg = "October"; 
     break; 
     case 11: 
     msg = "November"; 
     break; 
     case 12: 
     msg = "December"; 
     break;   
    } 

    hour = SafeInput.getIntInRange(in, "Enter the hour you were born in: ", 1, 24); 
    minutes = SafeInput.getIntInRange(in, "Enter the minutes you were born: ", 1, 59); 

    System.out.println("You were born: " + year + " , " + msg + " , " + hour + " hr. " + minutes + " mins. "); 


    SafeInput.getYNConfirm(in, "Would you like to play again?"); 

    } 
} 

}

Vielen Dank für jede Hilfe.

+1

Was ist dein Problem? Msgstr "Mein Problem ist, dass ich die Methode nicht dazu bringen kann, das J/N zu übernehmen und das Programm zu beenden, sowie zu beenden, wenn ein N eingegeben wird." ist eher vage. Was genau passiert im Vergleich zu dem, was Sie erwarten. – Carcigenicate

+0

Ändere die letzte Zeile in: 'done = SafeInput.getYNConfirm (in," Möchtest du nochmal spielen? ");', Sonst verlierst du nur den Wert und 'done' bleibt falsch. – AntonH

+0

Entschuldigung für vage, im Grunde, wenn der Benutzer gibt Y oder N das Programm automatisch Schleifen und nicht zu stoppen, wenn ich ein N. habe es behoben, danke an alle! – rKittle

Antwort

3

Der Wert done ist immer false. Ändern Sie auf der letzten Zeile:

done = SafeInput.getYNConfirm(in, "Would you like to play again?"); 

EDIT:

Ihre Logik nicht passt, wenn Sie true ändern auch hier zurück:

if(choice.equalsIgnoreCase("Y")) 
     { 
      return false; 
     } 
     else 
     { 
      return true;  
     } 
+1

duh! Danke vielmals! – rKittle

+0

@rKittle willkommen! Sie können es akzeptieren, wenn es Ihr Problem löst. –

0

Sie müssen den Wert von done Basis auf der Rückkehr ändern der getYNConfirm-Methode. So sollte die letzte Zeile

sein
done = SafeInput.getYNConfirm(in, "Would you like to play again?"); 
Verwandte Themen