java - 为什么当我输入 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.");
}
}
}
解决方案
可能随机数的数字应该从您生成的 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;
希望这能解决:)
推荐阅读
- gremlin - 如何删除与特定边缘连接的所有节点?
- python - 当我尝试导入模块时在 Jupyter Notebook NameError 中
- html - 防止最后一行中的弹性项目变得比其他弹性项目大
- java - 调整对话框大小时如何调整对话框内的子项大小
- python - 查找熊猫列中值组合的频率
- sas - sas, combine, 未知代码数据集观察
- excel - 安装 VSTO WIX 后 Excel 无法启动
- python - 如何在 Django Chartit 图表的 xAxis 中将 yyyy-mm-dd 截断为 mm-dd?
- regex - 无范围限制的 IP 地址正则表达式
- yocto - Yocto - “没有提供 websocketpp-dev-0.7.0-r0 所需的 websocketpp = 0.7.0-r0”