防止重复的扫描仪用户输入

时间:2014-04-03 20:21:49

标签: java validation input

我写的这个节目给了我适合。我想要做的是阻止用户两次输入相同的整数。该程序接受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]))

有没有更好的方法来测试数组是否已包含值?

提前致谢。

3 个答案:

答案 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。