Java-无重复数字数组
我正在通过BlueJ使用Java创建彩票程序,我对用户输入的号码和程序生成的号码(包括1-49)有问题,我需要用户输入的号码不能重复,即用户不能输入1和1 我真的不知道如何使数字不重复我在考虑使用一个数组,但我不知道什么类型或从哪里开始,我对整个编程都很陌生Java-无重复数字数组,java,numbers,bluej,Java,Numbers,Bluej,我正在通过BlueJ使用Java创建彩票程序,我对用户输入的号码和程序生成的号码(包括1-49)有问题,我需要用户输入的号码不能重复,即用户不能输入1和1 我真的不知道如何使数字不重复我在考虑使用一个数组,但我不知道什么类型或从哪里开始,我对整个编程都很陌生 import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class JavaApplication8 { public
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class JavaApplication8 {
public static void main(String[] args) {
Scanner user_input = new Scanner (System.in);
Scanner keyIn = new Scanner(System.in);
int[] LotteryNumbers = new int[6];
int input;
int count = 0;
System.out.print("Welcome to my lottery program which takes\nyour lottery numbers and compares\nthem to this weeks lottery numbers!");
System.out.print("\n\nPress the enter key to continue");
keyIn.nextLine();
for (int i = 0; i < LotteryNumbers.length; i++)
{
count ++;
System.out.println("Enter your five Lottery Numbers now " + count + " (must be between 1 and 49): ");
input = Integer.parseInt(user_input.next());
if (input < 1 || input > 49)
{
while (input < 1 || input > 49)
{
System.out.println("Invalid number entered! \nPlease enter lottery number (between 1 and 49) " + count);
input = Integer.parseInt(user_input.next());
if (input >= 1 || input <= 49)
{
LotteryNumbers[i] = input;
}
}
}
else
{
LotteryNumbers[i] = input;
}
}
System.out.println("Thank you for your numbers.\nThe system will now check if you have any matching numbers");
System.out.print("Press the enter key to continue");
keyIn.nextLine();
Random randNumGenerator = new Random();
StringBuilder output = new StringBuilder();
int[] ActLotteryNumbers = new int[6];
for (int j = 0; j < ActLotteryNumbers.length; j++)
{
int roll = randNumGenerator.nextInt(49);
ActLotteryNumbers[j] = roll;
}
System.out.println(Arrays.toString(ActLotteryNumbers));
int counter = 0;
for (int i = 0; i < LotteryNumbers.length; i++)
{
for (int j = 0; j < ActLotteryNumbers.length; j++)
{
if (LotteryNumbers[i] == ActLotteryNumbers [j])
{
counter ++;
System.out.println("The numbers that match up are: \n" + LotteryNumbers[i]);
}
}
}
if (counter == 0)
{
System.out.println("You had no matching numbers this week ... Try Again next week!");
}
}
}
导入java.util.array;
导入java.util.Random;
导入java.util.Scanner;
公共类JavaApplication8{
公共静态void main(字符串[]args){
扫描仪用户输入=新扫描仪(System.in);
扫描仪输入=新扫描仪(系统输入);
int[]LotteryNumbers=新int[6];
int输入;
整数计数=0;
System.out.print(“欢迎使用我的彩票计划,该计划会获取\n您的彩票号码并将其与本周的彩票号码进行比较!”);
System.out.print(“\n\n按enter键继续”);
keyIn.nextLine();
for(int i=0;i49)
{
while(输入<1 | |输入>49)
{
System.out.println(“输入的号码无效!\n请输入彩票号码(介于1和49之间)”+计数);
input=Integer.parseInt(user_input.next());
如果(input>=1 | | input如“fge”所述,请使用Set添加从用户处获得的所有值
获取用户输入并将其添加到集合中
使用迭代器检查用户输入的值和生成的随机数
Set myset = new HashSet();
myset.add(user_input1);
myset.add(user_input1);
使用迭代器的
Iterator iterator = myset.iterator();
while(iterator.hasNext(){
int value= iterator.next();
if(randomValue==value)
//do your logic here
}
我假设这是一个学校项目/实验室?(这是由于JavaApplication8的类名)如果是这样的话,讲师最可能寻找的是一个包含方法
对于contains方法,您编写了一个方法,该方法接受整数并检查它是否已在您的LotteryNumbers数组中,然后返回布尔值。如果它在数组中,则返回true,如果不在数组中,则返回false。在将数字插入LotteryNumbers之前将调用此方法。您可以使用不在数组中的count变量在contains方法中,似乎在其他任何地方用作循环的限制,以避免检查未初始化的条目
如果没有对类型的限制,那么其他人建议的集合想法会更有效,这取决于你应该使用什么来满足你的需求
此外,您使用的逻辑很可能也应用于ActLotteryNumber。如果传入的不是重复的,那么比较数组中就不应该有重复的值。彩票在现实生活中是不公平的,但也不是那么不公平;-)
第一步应该是检查你对这个项目的限制。为什么不使用集合
,因为它不允许重复?很抱歉有点傻,但你能解释一下你的意思吗?使用集合类对象而不是int数组,谷歌搜索集合或搜索Java API以了解更多该项目是为大学准备的是的,但不是我正在使用的代码被找到了,我正在尝试使用它,因为我真的不太擅长这一点,在我们必须提交此文件时,我真的看不到我有任何类似于程序的东西。除了停止重复的数字和程序的金钱方面,我设法完成了很多工作。将其分解为小部件。一件一件地做。我越想它,集合就不起作用,因为它只解决重复项,你也必须保持顺序,有些集合我相信,有些不相信。如果你使用ArrayList(使用api,它是你的朋友),它有一个预先确定的包含方法(你应该研究它的机制)您可以在接受值之前调用。对于上面的代码if contains==true,不要添加到ArrayList中,再次提示输入一个带有重复值的数字。您好,我已经完成了一段代码,希望能够消除重复项,我正试图将其合并到上面的代码中,但我有点问题下面是代码:'public Set LotteryNumbers(){Set RandomNumbers=new HashSet();Random Random=new Random();for(int i=0;i)问题出在哪里?是因为您的集合中没有得到足够的数字吗?如果是这个问题,是因为集合没有向集合中添加重复的数字(如您所愿)。您可以使用带有条件RandomNumbers.size()!=6Also的while循环来代替for循环,该条件来自HashSet api(api仍然是您的朋友):迭代器()返回此集合中元素的迭代器。元素没有特定顺序返回。我不确定这是如何工作的?我是否要为用户添加所有可能的输入,即“myset.add(user_input1);”中的数字1-49位?迭代器位让我很困惑。您可以将用户输入从用户扫描仪添加到集合中。添加后,将集合值与随机数生成器进行比较。迭代器用于遍历集合,hasNext()返回集合中的下一个元素