创建一个小型彩票应用程序,java

时间:2010-09-01 17:32:35

标签: java

我是一个java菜鸟,并一直在寻找一些帮助,如何创建这个彩票应用程序。我在这个网站上看了一些例子,但是有些代码对我实际实现有点太高级了(我不确定O(n)是如何工作的?)所以我想我在这里问了我的问题为了答案。

我需要创建一个非常简单的应用程序,生成3个随机数,并将它们与3个用户猜测进行比较。这些数字都是单个数字,但它们可以重复。例如,实际数字可能是1,1,1,并且用户可能已经猜到1,2,3但是奖金仅匹配用户猜测的1与单个匹配的实际数量中的任何1。

我只需要比较我想要的2个数组并考虑重复数字。我尝试创建嵌套的if语句,但是有20个左右的预测,它真的很快失控。专业人士会做什么?

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

好吧,要查看一个数组是否包含另一个数组的至少一个元素,我会执行以下操作:

int[] actualNums;
int[] guesses;

for (int i = 0; i < actualNums.length; i++) {
    for (int j = 0; j < guesses.length; j++) {
        if (actualNums[i] == guesses[j]) {
            // if you are here, you have found at least one match.
        }
    }
}

答案 1 :(得分:1)

如果我是你,我会使用java.util.Random课程。在你的情况下,你会让它像这样工作。首先导入Random类。

import java.util.Random;

然后创建一个随机整数数组0-9。

int[] randomNums;
Random generator = new Random(); //instance of a Random object
for(int i = 0; i < 3; i++) {
    randomNums[i] = generator.nextInt(10); //nextInt method gives int 0-9
}

对于用户输入的数组,除了使用参数外,遵循类似的过程。然后,您可以一起遍历数组并查看它们是否匹配。如果你正在做我认为你正在做的事情,你必须使用嵌套的for循环(确切地说是两个循环)。

答案 2 :(得分:0)

您应该将您的数字放入集合类,如List(允许重复)或Set(此处不重复)。然后,您可以使用现有方法contains()equals()来查找匹配项。

答案 3 :(得分:0)

这是我认为您将在核心代码中寻找的内容

public class Lottery{
    public boolean isWinner(ArrayList<?> user, ArrayList<?> lotto){

            if(user == null || lotto == null)
                return false;
            if(user.size() == 0 || lotto.size() == 0)
                return false;

            return lotto.containsAll(user);
        }
}

这使用任何类型的ArrayLists,并使用现有的containsAll()功能。

这很容易设置

Lottery lottery = new Lottery();
ArrayList<Integer> userOne = new ArrayList<Integer>();
ArrayList<Integer> lotto = new ArrayList<Integer>();

userOne.add(/*Some int value*/); //do this XX number of times as needed
lotto.add(/*Some int value*/); //do this XX number of times as needed

lottery.isWinner(userOne, lotto);

编辑这适用于lotto = {3,3,3} user = {1,3,8},但如果你交换数字则会中断:lotto = {1,3, 8},user = {3,3,3}。如果您知道尺寸将始终相同,则可以尝试

if(lotto.containsAll(user)){
    return user.containsAll(lotto);
}
return false;