我正在编写一个生成随机数的程序,然后让用户猜出该数字。我有两种方法:
public static void main(String[] args)
{
//Declares methods to be used during process
generateNumber();
playGame();
}
第一种方法generateNumber()
执行正常。代码如下所示:
public static void generateNumber()
{
//Generates number and assigns it to the variable "randomNumber"
System.out.println("Generating random number between 0 and 100. Please wait.");
Random rand = new Random();
int randomNumber = rand.nextInt(101) + 1;
System.out.println("Random number generated");
}
然后该过程结束,第二个方法playGame()
:
public static void playGame()
{
//Asks for guess of the number. Prints whether the guess is above or below randomNumber.
Scanner reader = new Scanner(System.in);
while(userGuess != randomNumber){
System.out.println("Guess the number ");
userGuess = reader.nextInt();
if (userGuess > randomNumber) {
numberOfGuesses++;
System.out.println("Incorrect! The number that you guessed is greater than my number!");
} else {
numberOfGuesses++;
System.out.println("Incorrect! The number that you guessed is less than my number!");
}
if(userGuess == randomNumber){
System.out.println("Correct! My number was "+randomNumber+". It took you "+numberOfGuesses+" tries to find my number!");
}
}
}
格式化可能很糟糕,但我只是将它从JCreator转移过来,这一切都搞砸了。我确信这很简单,但任何帮助都会受到赞赏。
答案 0 :(得分:1)
您的随机数在一个方法中声明,但在另一个方法中引用。
int randomNumber = rand.nextInt(101) + 1;
您需要在类范围内声明它。
答案 1 :(得分:1)
除了比尔蜥蜴所说的,你似乎没有在任何地方宣布猜测数量,也没有声明userGuess。你必须声明它们,可能是在函数范围内。
答案 2 :(得分:1)
randomNumber
是generateNumber()
中的本地变量,您尝试在playGame()
中访问它。
您必须使用全局变量,或者更好地将随机数作为参数提供给playGame()
public static int generateNumber()
{
//Generates number and assigns it to the variable "randomNumber"
System.out.println("Generating random number between 0 and 100. Please wait.");
Random rand = new Random();
int randomNumber = rand.nextInt(101) + 1;
System.out.println("Random number generated");
return randomNumber;
}
public static void playGame(int randomNumber)
{
...
}
public static void main(String[] args)
{
//Declares methods to be used during process
int randomNumber = generateNumber();
playGame(randomNumber);
}
更新
打印“正确”和“不正确”的问题在于if
陈述的结构
if (userGuess > randomNumber) {
// incorrect
} else {
// incorrect
}
if (userGuess == randomNumber) {
// correct
}
当你有guess == random
时,它会进入第二个else
中的if
部分和。要解决此问题,您必须将所有if
链接在一起,因此程序将仅选择三个分支中的一个,例如
if (userGuess == randomNumber) {
// correct
} else if (userGuess > randomNumber) {
// incorrect
} else {
// incorrect
}
答案 3 :(得分:0)
您似乎错过了userGuess
变量的声明。
编辑:而且,randomNumber
变量也未在第二种方法中声明。您应该在类中将其声明为静态字段。