首页 > 解决方案 > 为什么当我输入 3 个相同的数字时我的输出总是相同的?

问题描述

几周前我刚刚开始学习编程,今天我偶然发现了这个我被卡住的问题。当我输入 3 个相同的数字时,我的代码的输出总是相同的。例如,111、222 或 333。这是问题,以下是我的代码。

(游戏:彩票)修改代码 3.8,Lottery.java,生成一个三位数字的彩票。程序提示用户输入一个三位数字,并根据以下规则判断用户是否中奖:

class Question15 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        int randomNumber = (int) (Math.random() * 1000);
        System.out.println("This lottery program generates a random three digit number. Please make a guess of the three digit number and the program will determines the result. ");
        System.out.println("Awards for the lottery program:");
        System.out.println("1. If the user input matches the lottery number in the exact order, the award is $12000");
        System.out.println("2. If all digits in the user input match all digits in the lottery number, the award is $5000");
        System.out.println("3. If one digit in the user input matches a digit in the lottery number, the award is $2000");
        System.out.print("Please enter your three digit number: ");
        System.out.println();


        int number = input.nextInt();
        int number_lastDigit = number % 10;
        int number_secondDigit = (number % 100) / 10;
        int number_firstDigit = number / 100;

        int randomNumber_firstDigit = randomNumber / 100;
        int randomNumber_lastDigit = randomNumber % 10;
        int randomNumber_secondDigit = (randomNumber % 100) / 10;
        System.out.println("The generated random number is: " + randomNumber);

        if (number >= 100 && number < 1000) {
            if (randomNumber == number) // FIRST PRIZE
            {
                System.out.println("Congratulations! Your winning award is $12000!");
            } else if (number_lastDigit == randomNumber_firstDigit && number_lastDigit == randomNumber_secondDigit && number_secondDigit == randomNumber_firstDigit && number_secondDigit == randomNumber_lastDigit && number_firstDigit == randomNumber_secondDigit && number_firstDigit == randomNumber_lastDigit) {
                System.out.println("Congratulations! Your winning award is $5000!"); // SECOND PRIZE
            } else if (number_lastDigit == randomNumber_firstDigit || number_lastDigit == randomNumber_secondDigit || number_secondDigit == randomNumber_firstDigit || number_secondDigit == randomNumber_lastDigit || number_firstDigit == randomNumber_secondDigit || number_firstDigit == randomNumber_lastDigit || randomNumber_firstDigit == number_firstDigit || randomNumber_secondDigit == number_secondDigit || randomNumber_lastDigit == number_lastDigit) {
                System.out.println("Congratulations! Your winning award is $2000!"); // THIRD PRIZE
            } else {
                System.out.println("Please try again.");
            }

        } else {
            System.out.print("Please enter a 3 digit number.");
        }
    }
}

标签: java

解决方案


可能随机数的数字应该从您生成的 randomNumber 中计算出来,而不是从您从用户那里获取的输入。

int randomNumber_firstDigit = number / 100;
        int randomNumber_lastDigit = number % 10;
        int randomNumber_secondDigit = (number % 100) / 10;

这应该是

int randomNumber_firstDigit = randomNumber / 100;
        int randomNumber_lastDigit = randomNumber % 10;
        int randomNumber_secondDigit = (randomNumber % 100) / 10;

希望这能解决:)


推荐阅读