Java 如何制作“三选一”彩票计划?(爪哇)

Java 如何制作“三选一”彩票计划?(爪哇),java,Java,第一篇文章在这里,因为我很沮丧。 任务是创建一个程序,其中生成3个0-9之间的随机数,用户将在其中输入3个数字。如果1个数字匹配-用户赢得10美元,如果2-100美元,如果3-1000美元,如果全部3个数字都匹配-100万美元。 出于某种原因,即使没有一个数字匹配,它也会给我10美元,还有其他问题 我知道一定有更简单的方法。这是我的第一门java课程,所以我还是一名初学者,但这是我想到的代码: public class TheLottery { public static void ma

第一篇文章在这里,因为我很沮丧。 任务是创建一个程序,其中生成3个0-9之间的随机数,用户将在其中输入3个数字。如果1个数字匹配-用户赢得10美元,如果2-100美元,如果3-1000美元,如果全部3个数字都匹配-100万美元。 出于某种原因,即使没有一个数字匹配,它也会给我10美元,还有其他问题

我知道一定有更简单的方法。这是我的第一门java课程,所以我还是一名初学者,但这是我想到的代码:

public class TheLottery
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        System.out.println("enter a number from 0-9");
        int num1 = input.nextInt();

        System.out.println("enter a second number from 0-9");
        int num2 = input.nextInt();

        System.out.println("enter a third number from 0-9");
        int num3 = input.nextInt();

        Random r=new Random();
        int a1=r.nextInt(10);

        Random r1=new Random();
        int a2=r.nextInt(10);

        Random r2=new Random();
        int a3=r.nextInt(10);

        System.out.println("The winning numbers are "+ a1 + a2 + a3);
        boolean winning1=true;
        boolean winning2=true;
        boolean winning3=true;

        if (num1 == a1 || num1 == a2 || num1 == a3)
            winning1 = true;
        else
            winning2 = false;

        if (num2 == a1 || num2 == a2 || num2 == a3)
           winning2 = true;
        else
           winning2 = false;

        if (num3 == a1 || num3 == a2 || num3 == a3)
            winning3 = true;
        else
            winning3= false;

        if(winning1==true && winning2==true && winning3==true && num1 == a1 && num2==a2 && num3==a3)
            System.out.println("YOU'RE A MILLIONAIRE!");
        else if (winning1==true && winning2==true && winning3==true)
            System.out.println("You win 1,000 dollars!");
        else if ((winning1==true && winning2==true) || (winning1==true && winning3==true) ||(winning2==true && winning3==true))
            System.out.println("You win 100 dollars!");
        else if (winning1==true || winning2==true || winning3==true)
            System.out.println("You win 10 dollars!");
        else
            System.out.println("You lose!");
    }
}

您在条件语句中将错误的变量赋值为false。应该是

 if (num1 == a1 || num1 == a2 || num1 == a3)
    winning1 = true;
    else
    winning1 = false;

您还声明了新的随机变量,但从未使用它们。但以上就是为什么即使你没有匹配任何数字,你也会被奖励10美元

在条件语句中将错误的变量赋值为false。应该是

 if (num1 == a1 || num1 == a2 || num1 == a3)
    winning1 = true;
    else
    winning1 = false;

您还声明了新的随机变量,但从未使用它们。但以上就是为什么即使你没有匹配任何数字,你也会被奖励10美元

第一个问题已由@Adam S指出。您在第一次尝试检查时分配了错误的布尔变量

如果你从一开始就记录胜负,而不是记录哪些尝试成功,那会更容易

        int wins = 0;

        if (num1 == a1 || num1 == a2 || num1 == a3)
            wins++;
        if (num2 == a1 || num2 == a2 || num2 == a3)
            wins++;
        if (num3 == a1 || num3 == a2 || num3 == a3)
            wins++;

        if(wins == 3)
            if(num1 == a1 && num2==a2 && num3==a3)
                System.out.println("YOU'RE A MILLIONAIRE!");
            else
                System.out.println("You win 1,000 dollars!");
        else if (wins == 2)
            System.out.println("You win 100 dollars!");
        else if (wins == 1)
            System.out.println("You win 10 dollars!");
        else
            System.out.println("You lose!");

@Adam S指出了第一个问题。您在第一次尝试检查时分配了错误的布尔变量

如果你从一开始就记录胜负,而不是记录哪些尝试成功,那会更容易

        int wins = 0;

        if (num1 == a1 || num1 == a2 || num1 == a3)
            wins++;
        if (num2 == a1 || num2 == a2 || num2 == a3)
            wins++;
        if (num3 == a1 || num3 == a2 || num3 == a3)
            wins++;

        if(wins == 3)
            if(num1 == a1 && num2==a2 && num3==a3)
                System.out.println("YOU'RE A MILLIONAIRE!");
            else
                System.out.println("You win 1,000 dollars!");
        else if (wins == 2)
            System.out.println("You win 100 dollars!");
        else if (wins == 1)
            System.out.println("You win 10 dollars!");
        else
            System.out.println("You lose!");

由于
winning1
默认为true,因此由于这行代码,您将始终拥有$10:

if (num1 == a1 || num1 == a2 || num1 == a3)
    winning1 = true;
else
    winning2 = false;
winning 1
决不能等于false。此外,我将使用数组和for循环。例如:

Random r=new Random();
int[] winningNumbers = new int[2];
for (int i = 0; i<2; i++) winningNumbers[i] = r.nextInt(10);
Scanner input = new Scanner(System.in);
int[] numbers = new int[2];
for (int i = 0; i<2; i++) number[i] = input.nextInt();
Random r=new Random();
int[]winningNumbers=新int[2];

对于(int i=0;i因为
winning1
默认为true,由于这行代码,您将始终拥有$10:

if (num1 == a1 || num1 == a2 || num1 == a3)
    winning1 = true;
else
    winning2 = false;
winning1
永远不能等于false。此外,我会使用数组和for循环。例如:

Random r=new Random();
int[] winningNumbers = new int[2];
for (int i = 0; i<2; i++) winningNumbers[i] = r.nextInt(10);
Scanner input = new Scanner(System.in);
int[] numbers = new int[2];
for (int i = 0; i<2; i++) number[i] = input.nextInt();
Random r=new Random();
int[]winningNumbers=新int[2];

对于(int i=0;我为什么要在结尾重复所有逻辑?
if(winning1==true&&winning2==true&&winning3==true&&num1==a1&&num2==a2&&num3==a3)
另外:
winning1
等都是布尔值。你可以说
if(winning1&&winning2…
最后但并非最不重要的一点:
winning1==a1=(num1==a1&&124m1==a2)
;看起来您需要学习使用调试器。请自己解决一些问题。如果之后仍然存在问题,请随时回答更具体的问题。为什么要在结尾重复所有逻辑?
If(winning1==true&&winning2==true&&winning3==true&&num1==a1&&num2==a2&&num3==a3)
另外:
winning1
等都是布尔值。你可以说
if(winning1和&winning2…
最后但并非最不重要:
winning1=(num1==a1 | | num1==a2 | | num1==a3)
;看起来您需要学习使用调试器。请自便。如果您以后仍有问题,请随时提出更具体的问题。这已经非常有帮助了。谢谢!没想到会有这么快的响应!没问题,但正如@clinomaniac所建议的,使用调试器将极大地帮助您解决问题这类问题=)已经帮了很多忙谢谢!没想到会有这么快的响应!没问题,但正如@clinomaniac所建议的,使用调试器将极大地帮助您解决这类问题=)