我写的这个节目给了我适合。我想要做的是阻止用户两次输入相同的整数。该程序接受4个int输入并将它们与4个随机int的数组进行比较,搜索匹配。以下是我迄今为止试图阻止多次输入的内容。
for (int z = 0; z<4; z++){
System.out.println("Enter a number between 0-9. No duplicates please!");
temp[z] = inputDevice.nextInt();
for(int why = 0; why<temp.length; why++){
if(Arrays.asList(temp).contains(temp[z])){
System.out.println("Duplicate found! Please enter a non-repeating digit");
temp[z]=0;
z--;
}
}
}
输入正好进入临时数组。并且正在传递给程序中的其他方法,这是有效的。我猜这个问题是我的条件语句 - 如果(Arrays.asList(temp).contains(temp [z]))
有没有更好的方法来测试数组是否已包含值?
提前致谢。
答案 0 :(得分:1)
1)由于您要将数组转换为列表,因此也可以使用ArrayList
2)将您的输入存储在变量中并测试它是否已包含在列表中
List<Integer> my_list = new ArrayList<Integer>();
for (int z = 0; z<4; z++){
System.out.println("Enter a number between 0-9. No duplicates please!");
int input = inputDevice.nextInt();
if(my_list.contains(input)){
System.out.println("Duplicate found! Please enter a non-repeating digit");
z--;
}
else{
my_list.add(input);
}
}
答案 1 :(得分:0)
当您检查temp是否包含z时,它已包含z。在检查之前将输入放在临时变量中,然后再添加它。
答案 2 :(得分:0)
您未在循环中使用why
。
但是,如果可能,我会将temp
更改为ArrayList
实施。 toList
方法的问题。它将int[]
数组用作单个对象,而不是将其视为int
个对象的数组。要执行后者,您必须使用Integer
s。