如何在循环中的嵌套if语句中结束while循环? (可能很容易)

时间:2015-04-13 23:53:36

标签: java if-statement while-loop break nested-if

下面的代码是数字猜谜游戏的一部分,其中计算机在用户指定的范围内生成随机数。在这里,我试图将用户限制为10次猜测。如果他/她超过10,则游戏结束:

int t1 = 0;//stores # of guesses

while(true){//loop begins
t1++;//increments each iteration to represent # of guesses 

if(g1!=n){//if the guess is incorrect... (n = # user is trying to guess)

if(t1>10){//# of guesses cannot exceed 10
System.out.println("\nGAME OVER\nYou have exceeded the max # of tries!");
break;}//game ends if user exceeds max # of attempts

if(g1<n){System.out.println("\nGuess Higher!\n" + t1 + "attempt(s) so far");
continue;}//guess is too low    

if(g1>n){System.out.println("\nGuess Lower!\n" + t1 + " attempt(s) so far");
continue;}}//guess is too high (loop ends)

我收到的输出只有1/2正确。例如,假设计算机已生成1-1的范围内的数字12。在用户的第10个(最后一个)猜测中,它将打印:&#34; GAME OVER ...&#34 ;;但是,如果用户的猜测太低或太高,它也会打印出来,这是我不想要的。

我可以做出哪些更改来纠正此错误?我认为这与“休息”有关。嵌套if中的语句。

1 个答案:

答案 0 :(得分:1)

您的问题似乎有效。代码是正确的,它正在做它应该做的事情。但是,编写相同代码的更好,更有效的方法是:

// run a for loop that will let user guess 10 times
for (int i = 0; i < 10; i++)
{
    // see if the guessed number is incorrect
    if (g1 != n)
    {
         // check whats wrong with the number entered

         // number of guesses cannot exceed 10
         if ((i+1) >= 10)
         {
             System.out.println("\nGAME OVER\nYou have exceeded the max # of tries!"); 
         }
         else if (g1 < n)
         {
             // if user's guess is less than the number
             System.out.println("\nGuess Higher!\n" + (i+1) + "attempt(s) so far"); 
         }
         else if (g1 > n)
         {
             // if user's guess is greater than the number
             System.out.println("\nGuess Lower!\n" + (i+1) + " attempt(s) so far");
         } 
    } 
} // for loop ends