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

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); } 

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

System.in.read(); 给你char。 因此,当您输入“1”时,它会为您提供其char值49.因此您无法输入带有输入数字的整数5。 所以改变你的阅读方法。 你可以使用Scanner

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

这是您的代码的工作版本。

如前面的答案所述,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); } } 

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

public static void main(String [] args)throws 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); 

}