2013-09-23 73 views
1

程序会为第一个猜测数字生成正确的输出,但在用户输入第二个猜测后,根本没有输出。请帮忙!谢谢虽然循环输出

final int number = (int)((Math.random()*99)+1); 
    int counter = 0; 
    System.out.print("Enter a guess between 1 and 100: "); 
    while (keyboard.nextInt() > number) { 
     System.out.println("Your guess was too high. Try again."); 
     counter++; 
     System.out.print("Enter a guess between 1 and 100: "); 
    } 
    while (keyboard.nextInt() < number) { 
     System.out.println("Your guess was too low. Try again."); 
     counter++; 
     System.out.print("Enter a guess between 1 and 100: "); 
    } 
    while (keyboard.nextInt() == number) { 
     System.out.println("Congratulations! Your guess was correct!"); 
     counter++; 
     System.out.println("I had chosen " + number + " as the target number."); 
     System.out.println("You guessed it in " + counter + " tries."); 
     if (counter == 1) { 
      System.out.println("That was lucky!"); 
     } 
     if (counter >= 2 || counter <= 4) { 
      System.out.println("That was amazing!"); 
     } 
     if (counter == 5 || counter == 6) { 
      System.out.println("That was good."); 
     } 
     if (counter == 7) { 
      System.out.println("That was OK."); 
     } 
     if (counter == 8 || counter == 9) { 
      System.out.println("That was not very good."); 
     } 
     if (counter >= 10) { 
      System.out.println("This just isn't your game."); 
     } 
+3

你有while循环太多。你最终的目标是什么? – Smit

+0

为什么你有2 while循环? –

+0

此外,你错过了你的代码的开始和结束 –

回答

3

你真的需要改变你的设计模式。

一旦不能满足条件的1 while循环,你的代码将永远不会回去。

您应该只有1个while循环的猜测阶段。你的代码应该是这样的

while(someCondition) 
{ 
    int num = keyboard.nextInt() 
    if (num > number) { 
     ...  
    } 
    else if (num < number) { 
     ... 
    } 
    else if (num == number) { 
     ... 
    } 
} 
0

此块似乎并不工作打算:

while (keyboard.nextInt() > number) { 
    System.out.println("Your guess was too high. Try again."); 
    counter++; 
    System.out.print("Enter a guess between 1 and 100: "); 
} 
while (keyboard.nextInt() < number) { 
    System.out.println("Your guess was too low. Try again."); 
    counter++; 
    System.out.print("Enter a guess between 1 and 100: "); 
} 

假设用户输入-1,然后101你会在接下来的循环结束。因此,你可能要改变它的东西是这样的:

boolean retry = true; 
while (retry) { 
    counter++; 
    int n = keyboard.nextInt(); 
    if(n > number) { 
     System.out.println("Your guess was too high. Try again."); 
    } 
    else if(n < number) { 
     System.out.println("Your guess was too low. Try again."); 
    } 
    else { 
     //number found 
     retry = false; 
    } 

    if(retry) { 
     System.out.prnt("Enter a guess between 1 and 100: "); 
    } 
} 
2
  • while循环应该是if语句。
  • 应该有一个while环周围(几乎)所有的代码

你的代码应该大致是这样的:

while(true) { 
    // prompt for input 
    // read input 
    // break from loop if input is the exit input, eg -1 
    // check input - essentially change your whiles to ifs 
} 
0

有你如何使用while语句的一些问题。

在这里你可以找到你的代码的正确版本:

public static void main(final String[] args) { 
    final Scanner keyboard = new Scanner(System.in); 
    final int number = (int) ((Math.random() * 99) + 1); 
    int counter = 0; 
    System.out.print("Enter a guess between 1 and 100: "); 
    int user_number; 
    do { 
     user_number = keyboard.nextInt(); 
     if (user_number > number) { 
      System.out.println("Your guess was too high. Try again."); 
      System.out.print("Enter a guess between 1 and 100: "); 
      counter++; 
     } else if (user_number < number) { 
      System.out.println("Your guess was too low. Try again."); 
      System.out.print("Enter a guess between 1 and 100: "); 
      counter++; 
     } 
    } while (user_number != number); 
    System.out.println("Congratulations! Your guess was correct!"); 
    counter++; 
    System.out.println("I had chosen " + number + " as the target number."); 
    System.out.println("You guessed it in " + counter + " tries."); 
    if (counter == 1) { 
     System.out.println("That was lucky!"); 
    } 
    if ((counter >= 2) || (counter <= 4)) { 
     System.out.println("That was amazing!"); 
    } 
    if ((counter == 5) || (counter == 6)) { 
     System.out.println("That was good."); 
    } 
    if (counter == 7) { 
     System.out.println("That was OK."); 
    } 
    if ((counter == 8) || (counter == 9)) { 
     System.out.println("That was not very good."); 
    } 
    if (counter >= 10) { 
     System.out.println("This just isn't your game."); 
    } 
} 
0
while(someCondition) 
{ 

    if (keyboard.nextInt() > number) { 

     ... 

    } else if(keyboard.nextInt() < number) { 

     ... 

    } else { 

     ... 

    } 

}