2012-04-23 51 views
0

好,所以這是假設是完整代碼的一部分,但要點是,用戶猜測的答案,猜數遊戲,當下用戶得到正確的事:錯誤的猜謎遊戲的Java代碼

if (guess==num){ 
    System.out.println("You Win!"); 
    System.out.println("Play Again?? Y/N"); 

    String play=scan.nextLine(); 

    if(play.equalsIgnoreCase("y")){ 
     Game(); 
    } 

    if(play.equalsIgnoreCase("n")){ 
     System.exit(1); 
    } else { 
     invalid(); //when playing again, it says you entered an invalid choice which i do not want. 

     play=scan.nextLine(); 

     if(play.equalsIgnoreCase("y")){ 
      Game(); 
     } 
    } 
} 

輸出爲:

....................................... ......

You Win!

再次玩?是/否

您輸入的值無效,請重新輸入Y/N < < =====問題在這裏 .................. ...............................................

我想要的是來自用戶的輸入以響應再次播放?問題,但我不明白是什麼導致我打印出你的代碼部分輸入了一個無效的選擇,有人可以幫忙嗎?我只是不能看到問題。我仍然需要無效的方法,因爲我想告訴用戶,當他們輸入對y/n問題的無效答案時。

+0

請在有人花時間回答之後,不要刪除問題的內容。 – 2012-04-24 01:00:43

回答

5

選擇yes後,您的代碼仍然可以進入無效部分。您需要使用一個否則,如果聲明

if(play.equalsIgnoreCase("y")){ 
     Game(); 
} 

else if(play.equalsIgnoreCase("n")){ 
    System.exit(1); 
} 

else{ 
    //... 
} 

您使用的編程環境,調試?使用您的原始代碼,我建議在System.out.println("You Win!");行上設置一個斷點,然後觀察代碼逐行顯示的路徑。這將幫助你瞭解發生了什麼事。

即使沒有進行調試,您也可以添加更多的System.out語句以更好地感受程序的流程。

String play=scan.nextLine(); 
System.out.println("My inputted value was " + play); 

    if(play.equalsIgnoreCase("y")){ 
     System.out.println("Beginning new game..."); 
     Game(); 
    } 

    if(play.equalsIgnoreCase("n")){ 
      System.out.println("Exiting game..."); 
      System.exit(1); 
     } 

    else{ 
+0

即時通訊仍然是初學者的編碼器,我還沒有學會使用斷點,但感謝提示,真的! – Liquified 2012-04-23 16:17:59

+0

使用您的建議後,我發現問題!代碼System.out.println(「You Win!」); System.out.println(「再次播放?是/否」); String play = scan.nextLine(); << ====字符串類型掃描根本沒有啓動 – Liquified 2012-04-23 16:41:43

+0

@ user1343502高興地幫助...但我希望你不要刪除這個,因爲你不允許尋求幫助而你想隱藏這個問題來自你的老師。 – DMulligan 2012-04-23 19:20:39

3
if(play.equalsIgnoreCase("y")){ 
     Game(); 
    } 

即使用戶按下Y,它會在未來的if/else

if(play.equalsIgnoreCase("n")){ 
      System.exit(1); 
    } else { 

     invalid(); //when playing again, it says you entered an invalid choice which i do not want. 

      play=scan.nextLine(); 

      if(play.equalsIgnoreCase("y")){ 
       Game(); 
      } 
     } 

    } 

而且因爲玩的是Y,它調用

invalid(); 
+0

所以問題在於如果條件?以某種方式字符串play = scan.nextLine();沒有掃描任何輸入,並直接跳到代碼的其餘部分? – Liquified 2012-04-23 15:54:54

+1

問題實際上你有兩個'if'語句。它會一直調用兩次'if'語句。 如果用戶按'N',那麼很好,因爲第一個'if'是錯誤的。現在,如果用戶按'Y',它將進入第二個'if'語句中的'else'語句,該語句將調用'invalid();'。 – evanwong 2012-04-23 15:59:55

+0

我發現問題了!代碼System.out.println(「You Win!」); System.out.println(「再次播放?是/否」); String play = scan.nextLine(); << ====字符串類型掃描根本沒有啓動 – Liquified 2012-04-23 16:42:43