为什么这个do-while循环不能产生正确的输出?

时间:2014-12-04 16:05:42

标签: java loops while-loop output

public static void main(String[] args) throws IOException {

    System.out.println("Hello, come and play a game with me!");

    int x = 5;
    int guess;

    do {
        System.out.println("Please input a number...");
        guess = System.in.read();
        guess = System.in.read();
        if (guess < 5) {
            System.out.println("You guessed the number!");
            break;
        }
    } while (guess > 5);
}

所以我在这里写了一些代码。这应该是一个猜谜游戏,但无论我输入什么,它总是在输出中给我“请输入一个数字......”无论我输入什么。基本上,如果“猜测”超过5,那么他们猜对了这个数字。如果不是,那么他们没有猜到这个数字。这是比赛的前提。有人可以帮我修改我的代码,所以它不会输出同样的东西吗?

4 个答案:

答案 0 :(得分:3)

System.in.read();给你char。所以当你输入&#34; 1&#34;时,它会给你它的char值49.所以你输入的数字不能输入整数5。所以改变你的阅读方法。你可以使用Scanner

答案 1 :(得分:1)

你正在做相反的事 - 小于5的答案被认为是正确的。

答案 2 :(得分:0)

以下是您的代码的工作版本。

如前面的答案所述,System.in读入字符,因此您无法直接读取数字。下面的代码是利用BufferedReader API whitch在InputStream上工作。

public class App {


        public static void main(String[] args) throws IOException {

                System.out.println("Hello, come and play a game with me!");

                int x = 5;
                int guess;

                do                
                {               
                    System.out.println("Please input a number...");
                   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

                   guess = Integer.parseInt(br.readLine());
                    if(guess < 5){

                        System.out.println("You guessed the number!");                    
                        break;                    
                    }

                } while(guess>5);        
         }    
    }

答案 3 :(得分:0)

看起来你没有使用变量x,尝试使用Scanner类来获取用户的输入

public static void main(String [] args)抛出IOException {

System.out.println("Hello, come and play a game with me!");
 int guess;
 Scanner input = new Scanner(System.in);



do {
    System.out.println("Please input a number...");
     guess = input.nextInt();
           if (guess < 5) {
        System.out.println("You guessed the number!");
        break;
    }
} while (guess > 5);

}