Java 数字猜谜游戏中的While循环
我需要编写一段代码,让你猜一个介于1和10之间的数字,并使用一个循环。它必须使用System.in.read()方法来获取用户输入。正确的数字是7,当你猜到它结束的时候。如果你猜错了,它会告诉你再试一次。我不知道为什么我的代码不能正常工作,所以我需要一些帮助。我得到的输出很奇怪,不管我输入什么数字,它只会说: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之间的数字:
- (输入编号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值(即您输入的数字),然后将其转换为整数。您还可以参考此链接了解更多说明