Java 数字猜谜游戏中的While循环

Java 数字猜谜游戏中的While循环,java,algorithm,oop,if-statement,while-loop,Java,Algorithm,Oop,If Statement,While Loop,我需要编写一段代码,让你猜一个介于1和10之间的数字,并使用一个循环。它必须使用System.in.read()方法来获取用户输入。正确的数字是7,当你猜到它结束的时候。如果你猜错了,它会告诉你再试一次。我不知道为什么我的代码不能正常工作,所以我需要一些帮助。我得到的输出很奇怪,不管我输入什么数字,它只会说: 你好!!输入一个介于1和10之间的数字: (输入编号ex4) 你的猜测太高了 你好!!输入一个介于1和10之间的数字: 你的猜测太高了 你好!!输入一个介于1和10之间的数字: 我是编

我需要编写一段代码,让你猜一个介于1和10之间的数字,并使用一个循环。它必须使用System.in.read()方法来获取用户输入。正确的数字是7,当你猜到它结束的时候。如果你猜错了,它会告诉你再试一次。我不知道为什么我的代码不能正常工作,所以我需要一些帮助。我得到的输出很奇怪,不管我输入什么数字,它只会说:

  • 你好!!输入一个介于1和10之间的数字:
  • (输入编号ex4)
  • 你的猜测太高了
  • 你好!!输入一个介于1和10之间的数字:
  • 你的猜测太高了
  • 你好!!输入一个介于1和10之间的数字:
我是编程新手,如果缩进不正确或者解决方案很明显,我很抱歉

public static void main(String[] args) throws java.io.IOException {
    int input;
    boolean play = true;
    while (play == true) {
        System.out.println("Hello! Enter a number between 1 and 10: ");
        input = System.in.read();
        if (input > 7) {
            System.out.println("Your guess is too high");
        } else if (input < 7) {
            System.out.println("Your guess is too low");
        } else if (input == 7) {
            System.out.println("Correct! the correct number was: 7"); 
        }
    }
}
publicstaticvoidmain(字符串[]args)抛出java.io.IOException{
int输入;
布尔播放=真;
while(play==true){
System.out.println(“您好!输入一个介于1和10之间的数字:”);
输入=System.in.read();
如果(输入>7){
System.out.println(“您的猜测太高了”);
}否则如果(输入<7){
System.out.println(“您的猜测太低”);
}else if(输入=7){
System.out.println(“正确!正确的数字是:7”);
}
}
}

它应该根据数字给出一个具体的结果,比如如果数字太高或太低,那么你可以再试一次并输入一个新的数字,直到得到正确的答案7为止。如果号码不是1-10,您应该会收到一条错误消息。谢谢。

您没有更改
play
变量,因此
while
循环不会退出。您必须这样更改它:

else if (input == 7) {
    System.out.println("Correct! the correct number was: 7"); 
    play = false;
}

另外,您可能需要移动此行:
System.out.println(“您好!请输入一个介于1和10之间的数字:”)
之前,而
循环。

这可能会解决您的问题

public static void main(String[] args) {

    int input;
    boolean play = true;
    Scanner inputNumber = new Scanner(System.in);
    while (play) {
        System.out.println("Hello! Enter a number between 1 and 10: ");
        input = inputNumber.nextInt();
        if (input > 7) {
            System.out.println("Your guess is too high");
        } else if (input < 7) {
            System.out.println("Your guess is too low");
        } else if (input == 7) {
            System.out.println("Correct! the correct number was: 7");
            play = false;
        }
    }
}
publicstaticvoidmain(字符串[]args){
int输入;
布尔播放=真;
扫描仪输入编号=新扫描仪(System.in);
边玩{
System.out.println(“您好!输入一个介于1和10之间的数字:”);
input=inputNumber.nextInt();
如果(输入>7){
System.out.println(“您的猜测太高了”);
}否则如果(输入<7){
System.out.println(“您的猜测太低”);
}else if(输入=7){
System.out.println(“正确!正确的数字是:7”);
玩=假;
}
}
}

您的解决方案非常好,但是您忘记告诉while循环停止,您正在使用
play
标志。因此,当您找到
input==7
时,只需分配
play=false
。在得到正确答案后,我将代码更改为添加play=false,但由于某种原因,无论输入什么数字,它仍然会打印两次“您的数字太高”。使用扫描仪而不是System.in.read()工作正常,但我想知道是否有办法让它与System.in.read()方法一起工作/为什么它不工作。有什么线索吗?因为System.in.read()读取字节并返回一个整数,该整数是该字节的十进制ASCII值。你可以看到,如果你输入5,它将返回53。所以基本上你的输入是使用ASCII十进制值,它总是大于7(数字从0开始,十进制值0在ASCII中是48)。这就是为什么你会得到“你的猜测太高”作为输出。您可以使用input=((char)input-'0');在输入行下方。这会将十进制ASCII值更改为char值(即您输入的数字),然后将其转换为整数。您还可以参考此链接了解更多说明