这段代码似乎没有问题(这里是):
import java.util.*;
public class NumberGuessingGame {
static int randomNumber = (int) (Math.random() * 11);
static Scanner userInput = new Scanner(System.in);
static int guessedNumber = userInput.nextInt();
public static void main(String[] args) {
start: {
while (guessedNumber != randomNumber) {
System.out.println("I'm thinking of a number in my mind between 0 and 10. ");
delay(1500);
System.out.print("Try to guess it: ");
if (guessedNumber == randomNumber) {
System.out.print("Congradulations! ");
delay(800);
System.out.println("The number really was " + randomNumber);
} else {
break start;
}
}
}
}
public static void delay(int millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException exp) {
}
}
}
如果你不能告诉我,我是一个尝试创建基本数字猜谜游戏的初学者。所以我成功编写了它,但现在每次执行它都会发生这种情况:
它冻结了。为什么呢?
答案 0 :(得分:1)
问题在于您将userInput.nextInt()
调用放在静态字段的初始值设定项中;所以它会在你的类加载时被调用(并且程序暂停输入),然后它可以提示请求输入的提示。所以它看起来像是冻结了,但如果你输入一个数字,它就会继续。
在提示输入
的调用之后,您希望nextInt()
调用在您的方法中
答案 1 :(得分:0)
错误是因为您的程序正在等待用户输入。根据文档,Scanning操作可能会阻止等待输入
解决方案是在需要时实现do / while和userInput以及guessedNumber。
import java.util.*;
public class NumberGuessingGame {
static int randomNumber = (int) (Math.random() * 11);
static Scanner userInput;
static int guessedNumber;
public static void main(String[] args) {
System.out.println("I'm thinking of a number in my mind between 0 and 10. ");
do
{
delay(1500);
System.out.print("Try to guess it: ");
userInput = new Scanner(System.in);
guessedNumber = userInput.nextInt();
if (guessedNumber == randomNumber) {
System.out.print("Congratulations! ");
delay(800);
System.out.println("The number really was " + randomNumber);
} else {
System.out.println("Error, try again! ");
delay(800);
}
}
while (guessedNumber != randomNumber);
}
public static void delay(int millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException exp) {
}
}
}
文档:
答案 2 :(得分:-1)
它可能正在等你输入一个数字。我认为它没有悬挂。它等待用户输入。尝试输入一个数字。