我是一个java菜鸟,并一直在寻找一些帮助,如何创建这个彩票应用程序。我在这个网站上看了一些例子,但是有些代码对我实际实现有点太高级了(我不确定O(n)是如何工作的?)所以我想我在这里问了我的问题为了答案。
我需要创建一个非常简单的应用程序,生成3个随机数,并将它们与3个用户猜测进行比较。这些数字都是单个数字,但它们可以重复。例如,实际数字可能是1,1,1,并且用户可能已经猜到1,2,3但是奖金仅匹配用户猜测的1与单个匹配的实际数量中的任何1。
我只需要比较我想要的2个数组并考虑重复数字。我尝试创建嵌套的if语句,但是有20个左右的预测,它真的很快失控。专业人士会做什么?
感谢您的帮助
答案 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;