生成一个三位数号码的抽奖。程序提示用户输入一个三位数号码,并根据以下规则判断用户是否中奖:
- 如果用户输入以确切的顺序匹配彩票号码,则奖励为$10,000。
- 如果用户输入中的所有数字与彩票号码中的所有数字匹配,则奖励为$3,000。
- 如果用户输入中的一个数字与彩票号码中的数字匹配,则奖励为$1,000。
我需要帮助让我的程序按预期的方式运行代码中的所有内容。没有数组,没有字符串,除了已经存在的内容之外没有其他内容。我的问题是,在规则3中,我不明白为什么它不能识别中奖数字。例如,我的猜测数字将是142,彩票号码将是554,它会说“No Match,祝你下次好运”而不是“匹配一个数字,即使有一个正确的数字在我的猜测。
import java.util.Scanner;
public class Lottery {
public static void main(String[] args) {
//generate random lottery numbers
int lottery = (int)(Math.random() * 1000);
//ask user to enter a 3 digit integer and store those numbers
Scanner numbers = new Scanner(System.in);
System.out.println("Please enter your lottery pick. Three Digits Only");
int guess = numbers.nextInt();
// numbers for lottery
int lotteryDigit1 = lottery % 100;
int lotteryDigit2 = lottery % 100 / 10;
int lotteryDigit3 = lottery / 100;
//get digits from guess
int guessDigit1 = guess % 100;
int guessDigit2 = guess % 100 / 10;
int guessDigit3 = guess / 100;
//print out lottery numbers
System.out.println("The lottery numbers are: " + lottery);
if (guess == lottery)
System.out.println("Exact Match!!! 10,000$ Prize!!!");
else if (guessDigit2 == lotteryDigit1
&& guessDigit1 == lotteryDigit2
&& guessDigit3 == lotteryDigit3)
System.out.println("Matched all numbers!!! 3,000$ Prize!!!");
//Rule 3
else if (guessDigit1 == lotteryDigit1
|| guessDigit1 == lotteryDigit2
|| guessDigit1 == lotteryDigit3
|| guessDigit2 == lotteryDigit1
|| guessDigit2 == lotteryDigit2
|| guessDigit2 == lotteryDigit3
|| guessDigit3 == lotteryDigit1
|| guessDigit3 == lotteryDigit2
|| guessDigit3 == lotteryDigit3)
System.out.println("Mathed one number!!! 1,000$ Prize!!!");
else enter code here
System.out.println("No Match, Better Luck Next Time!");
4条答案
按热度按时间mrzz3bfm1#
问题是这段代码
对于
lottery
= 554,lotteryDigit1
将被设置为54。类似地,guessDigit1
被设置为42。相反,彩票% 10应该在这里给予你最低有效位。注意-在这种情况下很容易发现这个缺陷,但是学习如何使用调试器将有助于您在将来遇到类似的问题。
2hh7jdfx2#
//生成一个随机的三位数
}
yhived7q3#
所以,在这种情况下,有几个非常小的错误。当你试图得到数字1时,你以100取模。我相信你的意思是以10取模以得到1的数字。如果你知道如何,你可以通过放入调试器来查看这个,或者简单地打印出你在解决错误时临时拥有的值。
有一件事你没有提到,但我想你稍后会看到,你的代码确定是否3个数字匹配是稍微不正确的:
不会比较正确的数字对。
au9on6nz4#
下面是我在
Javascript
中提出的类似解决方案:这里是the link到repo。