2017-05-14 36 views
0
if (sum < 6) { 
    System.out.println("You win"); 
    System.out.println(); 
    // Does the user want to retry? 
    System.out.print("Would you like to retry?(Y or N) : "); 
    String retry = input.nextLine(); 

    while (true) { 
     // If they say y or Y, roll again 
     if (("y".equals(retry)) || ("Y".equals(retry))) { 
      roll(); 
     // Check for anything other than y and Y 
     } else if (("n".equals(retry)) || ("N".equals(retry))) { 
      System.out.println("Closing"); 
      break; 
     } else if (!("y".equals(retry)) || !("Y".equals(retry))) { 
      System.out.print("Invalid input. Would you like to retry?(Y or N) : "); 
      retry = input.nextLine(); 
      System.out.println(); 

     } 
    } 
} else if (sum > 6) { 
    System.out.println("You lose"); 
    System.out.println(); 
    System.out.print("Would you like to retry?(Y or N) : "); 
    String retry = input.nextLine(); 
    while (true) { 
     if (("y".equals(retry)) || ("Y".equals(retry))) { 
      roll(); 
     } else if (("n".equals(retry)) || ("N".equals(retry))) { 
      System.out.println("Closing"); 
      break; 
     } else if (!("y".equals(retry)) || !("Y".equals(retry))) { 
      System.out.print("Invalid input. Would you like to retry?(Y or N) : "); 
      retry = input.nextLine(); 
      System.out.println(); 
     } 
    } 
} 

我試圖做一個骰子游戲,當用戶輸入"y""Y"時,遊戲會繼續滾動骰子。我也希望它停止遊戲並在用戶輸入"n""N"時說"Closing"我的while循環不會停下來休息一下嗎?

問題是,當用戶輸入"n""N"時,它將打印出"Closing",但循環不停止,遊戲將再次擲骰子。當用戶輸入"n""N"時如何讓我的while()循環停止?

這裏的輸出,當用戶選擇停止遊戲("n" or "N"):請問

you like to retry?(Y or N) : n 
Closing 
Rolling... 
You rolled : 1 & 4 
Sum = 5 
You win 

我對這樣基本的問題,對不起,我是新來編程。

+0

快速編輯:如果用戶在第一次「重試?」時輸入「n」或「N」,遊戲將關閉。但是如果他輸入「y」或「Y」然後選擇停止遊戲,循環將繼續。 – Crypto

+1

這應該是一個重複的@JarrodRoberson?僅僅因爲他使用'Scanner',它不是重複的,他有一個邏輯錯誤,沒有任何真正與從System.in掃描相關的 - 錯位的行恰好使用掃描器,但問題本身與掃描器完全無關。 – luk2302

回答

5

將線String retry = input.nextLine();移入while循環(在兩個分支中)。目前,您只需讀入一個輸入,然後一遍又一遍地比較該不變輸入。

+0

哇,我覺得這樣的小菜。非常感謝,它工作! – Crypto

+1

@Crypto不覺得自己像個小菜鳥,那些「簡單」的錯誤發生在最有經驗的程序員:) – luk2302

+0

啊我看到了,謝謝:)! – Crypto