首页 > 解决方案 > 为什么这段代码会打印出无限量的“你猜怎么着?”

问题描述

我正在尝试在 1 到 100 的范围内进行数字猜谜游戏。如果用户猜对了数字,程序将停止。

我当前的代码:

import java.util.Scanner;
import java.util.Random;

public class GuessingGame {
    public static void main(String[] args) {
        Random randomNumber = new Random();
        Scanner reader = new Scanner(System.in);
        System.out.println("What's your guess? ");
        int n = reader.nextInt();
        reader.close();

    int Number = randomNumber.nextInt(100 + 1);
    int guess = n;
     while (guess != Number) {
        System.out.println("What's your guess? ");
        new Scanner(System.in);
    }

    if (guess == Number) {
        System.out.println("Your have guessed the correct number! ");
    }

    else if (guess < Number) {
        System.out.println("Your number is too low! ");
    }

    else if (guess > Number) {
        System.out.println("Your number is too high! ");
    }
}   
}            

标签: javanetbeans

解决方案


这就是在 IDE 中使用格式化程序很有帮助的地方。您将能够看到循环之后的 if 条件应该在循环内,并且您应该从输入读取猜测。

顺便说一句,除非您明确不想再次从中读取任何内容,否则您永远不应该关闭输入。

尝试

 Random randomNumber = new Random();
 Scanner reader = new Scanner(System.in);
 int number = randomNumber.nextInt(100 + 1);
 while(true) {
    System.out.println("What's your guess? ");
    int guess = reader.nextInt();

    if (guess == Number) {
        System.out.println("You have guessed the correct number! ");
        break; // no need to guess more

    } else if (guess < Number) {
        System.out.println("Your number is too low! ");

    } else if (guess > Number) {
        System.out.println("Your number is too high! ");
    }
}   

推荐阅读