java - 三位数彩票

标签 java

生成三位数的彩票。程序提示用户输入一个三位数,并根据以下规则判断用户是否获胜:

  • (规则 1)。如果用户输入的彩票号码与抽奖号码的顺序完全匹配,则奖金为 10,000 美元。
  • (规则 2)。如果用户输入的所有数字都与彩票号码中的所有数字匹配,则奖金为 3,000 美元。
  • (规则 3)。如果用户输入的一位数字与彩票号码中的一位数字匹配,则奖励为 1,000 美元。

我需要帮助让我的程序按照代码中看到的所有内容正常运行。没有数组,没有字符串,除了已经存在的东西之外什么都没有。我的问题是,在规则 3 中,我不明白为什么它不识别获胜数字。例如,我猜的号码是 142,而彩票号码是 554,它会说“没有匹配,下次运气更好”,而不是“匹配了一个号码,即使我猜的是一个正确的号码。

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!");

最佳答案

问题是这段代码 -

int lotteryDigit1 = lottery % 100;

对于 lottery = 554,lotteryDigit1 将设置为 54。同样,guessDigit1 设置为 42。相反,lottery % 10 应设置为在这里给你最低有效数字。

注意 - 在这种情况下可能很容易找出这个缺陷,但是学习如何使用调试器将有助于您将来解决类似问题。

关于java - 三位数彩票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60124547/

相关文章:

java - 最新的 Open JDK 8 JAXB 库无法解码具有包含换行符的属性的对象

java - 亲爱的Java,为什么大部分教程看起来像是80年代的遗留物?

java - Ubuntu 中 cassandra、Datastax Enterprise 和社区以及 Opscenter 的安装过程

java - 为什么我必须使用 Integer.parseInt?

java - getActionBar() 抛出空指针错误

java - 如何使用 Java 9 模块中的资源

Java 按值传递理解

C# 使用日历参数调用 Java Web 服务

java - Android,添加没有 XML 布局的新 View

java - Google+ 按钮集成...NulPointerException