【问题标题】:Java Array: How do I make a lottery game?Java Array:如何制作彩票游戏?
【发布时间】:2014-01-24 05:13:24
【问题描述】:

所以我需要制作一个可以制作彩票游戏的程序。

我的代码支持 4 种游戏,6-42、MegaLotto(6-45)、SuperLotto(6-49) 和 GrandLotto(6-55) 它会询问要玩哪个游戏,输入 1 表示 6-42,依此类推。

该游戏有 10 名玩家,每个玩家在乐透中都有不重复的随机数。 (例如,玩家 1:1,2,3,4,5,6 玩家 2:2,3,4,5,6,7 依此类推。)

有获胜组合 (例如获胜组合:1,2,3,4,5,6)

如何生成一个新号码来代替重复号码? (例如 1,1,2,3,4,5 重复的数字将生成一个新的数字,因此具有 7,1,2,3,4,5)

我的源代码:

public static void main(String args[])
{

        int c1[]= new int[10];
        int a1[]= new int[6];
        int a2[]= new int[6];
        int a3[]= new int[6];
        int a4[]= new int[6];
        int a5[]= new int[6];
        int a6[]= new int[6];
        int a7[]= new int[6];
        int a8[]= new int[6];
        int a9[]= new int[6];
        int a10[]= new int[6];
        int aMaster[]= new int[6];

        int a=0,b=0,c=0,d=0;
        int x,x1,x2,x3,x4;

        String help="";
        String holp="";
        char went='A';



        JDialog.setDefaultLookAndFeelDecorated(true);
        int numbers[]= new int[6];


    b= Integer.parseInt(JOptionPane.showInputDialog(null,"Type [1] for 6-42\nType [2] for Mega\nType [3] for Super\nType [4] for Grand\nType [5] Go away and never come back!","Play!!!", JOptionPane.WARNING_MESSAGE));

    while(b!=5)
    {
        switch(b)
            {

                case 1:

                    holp ="6-42 Lotto:\n";


                    for(x=0; x<a.length; x++)
                    {
                        a1[x]= AllGen(1,42);
                    }
                break;
            }
    }


}

AllGen 是一种数字生成方法,例如 (1,42) 将生成 1 到 42 之间的随机数。

【问题讨论】:

  • 请给您的问题一个合适的标题,以提高覆盖面。您描述的标题非常广泛。
  • Set 通常用于存储唯一编号。如果您必须使用数组,只需为您的数组实现集合操作(​​“包含?”和“添加/插入”)并循环获取新数字,直到你有足够的数量。使用数组作为集合将保证所有都是唯一的。

标签: java arrays sorting


【解决方案1】:

您可以使用SET。这是一个不允许重复数字的集合。您可以继续添加数字,直到列表达到您需要的长度。这样,每次重复一个数字,你的循环就会多跑一次。例如,如果您需要 6 个介于 0 到 50 之间的中奖号码,您可以使用以下内容:

Set winningNums = new TreeSet();
Random rand = new Random();

while (winningNums.size() < 6) {
    winningNums.add(rand.nextInt(51));
}

System.out.println(winningNums.toString());

您需要将其集成到您的程序中,但这将向您展示如何生成不重复的数字列表。我使用了一个TreeSet 来排序列表,但如果你不需要,你可以使用其他的。

样本输出

[9, 10, 12, 24, 31, 37]
[1, 10, 11, 19, 43, 45]
[6, 20, 21, 33, 40, 48]

如果 0 不是允许的数字,您可以在每次迭代时将随机生成的 int 加 1。

【讨论】:

  • 感谢 csmckelvey !!!非常有用,但是如果我使用 If 和 Else 或 switch,如何在没有集合的情况下制作相同的代码?
  • 您需要首先生成随机数。接下来,遍历您的数组并查看 if 该数字已包含在那里,如果是,则生成一个新的随机数并重复,如果它不在数组中,则 else ,添加它。如果您需要在代码中完全完成,您可能需要考虑打开另一个问题并准确指定您需要如何解决它。顺便说一句,如果一个集合可以自动为您执行此操作,我不会使用 if/else 执行此操作。
  • 我使用了上面的代码,但是编译器说omni5.java使用了未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译以获取详细信息。可能是因为我插入了新代码。
  • 首先,这只是一个警告,而不是错误,所以它仍然应该编译。另外,要确切地告诉您是什么原因造成的,我必须查看您尝试编译的确切代码,因为我编译/运行了此代码而没有任何警告。如果您只是将我的代码添加到上面发布的代码中,则可能是您使用 JOptionPane.WARNING_MESSAGE 选项从 inputDialog 解析 int。
  • 好的,所以我学会了回答这个问题的艰难方法,我的代码: for(x=0; x0) { a1[x]= AllGen(1,6); for(x1=1; x1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2019-07-17
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多