2017-10-26 10 views
0

私は間違っていれば、私の問題のために直接答えられている質問は何も見当たりませんでした。私は、年、月、日、時、分のあなたの出生情報を取って、Y/Nが入力されるまで方法とループを使用して再度やりたいかどうか尋ねるプログラムを書いています。Java - YまたはNが入力されるまでループするメソッド

私の問題は、Yを入力してプログラムを終了し、Nを入力すると終了するメソッドを取得できません。

私は方法の中にある必要がありますが、それを考え出すのが苦労している間、ある種のループがあると思います。

私の他のすべての方法は、この1つを除いてすべてのヘルプがありがとう、ありがとう。

これは私が今の私の方法を持っているコードです:

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


} 

そして、これは私のメインプログラムのコードです:

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?"); 

    } 
} 

}任意の助け

感謝。

+1

である必要があります。 「私の問題は、Y/Nを取り込んでプログラムを終了する方法と、Nが入力されたときに終了する方法を得ることができないことです。むしろあいまいです。具体的に何が起こっていると考えているか対何が起こっているか – Carcigenicate

+0

最後の行を次のように変更します: 'done = SafeInput.getYNConfirm(in、"もう一度やりますか? ");'そうでなければ値を失い、 'done'はfalseのままです。 – AntonH

+0

曖昧になって申し訳ありませんが、基本的にユーザーがYまたはNを入力すると、プログラムは自動的にループし、Nを入力すると停止しません。 修正あり、みなさんありがとうございます! – rKittle

答えて

3

doneの値は、常にfalseです。最後の行に変更:

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

EDIT:

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

duh!どうもありがとう! – rKittle

+0

@rKittleようこそ!あなたの問題を解決するなら、それを受け入れることができます。 –

0

あなたがリターンで行わベースの値を変更する必要があります。

あなたのロジックはあなたがここにもtrue変更を返す場合は適合しませんgetYNConfirmメソッドのだから最終行は

done = SafeInput.getYNConfirm(in, "Would you like to play again?"); 
関連する問題