输出方法处于无限循环中

时间:2015-03-30 17:53:06

标签: java loops

import java.util.*;
public class GuessingGame {
    public static void main( String[] args ){
        int x = getRandomNumber();
        int v = 0;
        int y = getGuessFromUser();
        output(x,y);
    }
    public static int getRandomNumber() {
        return (int)(Math.random()*25)+1;
    }
    public static int getGuessFromUser() {

        Scanner keyboard = new Scanner(System.in);
        int y;

        do {
            System.out.print("Enter a number between 1 and 25: ");
            y = keyboard.nextInt();

        } while(y <= 0 || y > 25);

        return y;
    }
    public static void output( int x, int y ) 
    {
        int v = 0;

        do {

            if(x > y) 
                System.out.println("TOO LOW");
            if(x < y) 
                System.out.println("TOO HIGH");

        } while( x != y );

        do {
            v++;
            System.out.print("YOU ARE CORRECT! IT TOOK YOU " + v + " GUESSES!");
        } while( x == y );
    }
}
  

当有人猜到一个数字时,循环不会结束。   我需要循环输出TOO HIGH,TOO LOW或CORRECT,然后让用户再次猜测。   相反,它会进入连续循环。

2 个答案:

答案 0 :(得分:-1)

 do{

    if(x > y)
       System.out.println("TOO LOW");
    if(x < y)
      System.out.println("TOO HIGH");

}while(x!=y);

在循环中没有更新x或y的位置,因此如果它进入循环,它将始终运行。

相反,两种可能性是输出返回一个布尔值,基于猜测是否正确并在其上循环或更新输出中循环中的变量。

答案 1 :(得分:-1)

你永远不会退出while循环,因为你永远不会改变你的x和y值,根据定义你会导致你无限循环。

你可以做的是让用户使用你的函数选择不同的数字,只要这两个数字不相同:确保你首先创建java类实例对象:

public class GuessingGame{
    public static void main( String[] args ){
        int x=getRandomNumber();
        int v=0;
        int y=getGuessFromUser();
        new myGuessingGame = new GuessingGame();
        myGuessingGame.output(x,y);
    }

然后每当两个数字x和y不匹配时重新调用该方法:

         do{
            if(x > y) {
            System.out.println("TOO LOW, try picking different x and y numbers:");
            x=myGuessingGame.getRandomNumber();
            y=myGuessingGame.getGuessFromUser();
            v++;
            }
            if(x < y)
            System.out.println("TOO HIGH, try picking different x and y numbers");
            x=myGuessingGame.getRandomNumber();
            y=myGuessingGame.getGuessFromUser();
            v++;
        }while(x!=y);
            System.out.print("YOU ARE CORRECT! IT TOOK YOU " + v + " GUESSES!");
    }

如果您只想更改x,但保持相同的y,则代替

            x=myGuessingGame.getRandomNumber();
            y=myGuessingGame.getGuessFromUser();

你只需要做

            x=myGuessingGame.getRandomNumber();

希望有所帮助!