如何防止用户复制条目(Java)

时间:2011-09-12 14:34:45

标签: java

我正在编写一个简单的程序,用户输入一个名称和一个整数。如果尚未使用整数,则名称将进入数组。我的问题是,我似乎无法弄清楚如何在输入时检查整数以查看它是否已被使用(重复)。我尝试将整数放入数组中,但无法使其工作。请记住,我是一个完整的新手。因此,在下面的代码中,在用户输入名称后,他/她输入一个时间(整数),如果时间尚未使用,则它是有效的;如果它被使用,我将需要抛出异常。到目前为止,我所拥有的只是为该名称工作的代码(将其添加到数组中)。

public void enterName()
{

    Scanner keyboard = new Scanner(System.in);

    for(i = 0; i < arrayNames.length; i++)
    {           
        System.out.println("Please enter your name.");
        names = keyboard.nextLine();

            arrayNames[i] = names;              
            System.out.println("name is in");           
    }
    System.out.println("array is full");


}

4 个答案:

答案 0 :(得分:3)

使用其他数据结构(例如Set会不会更容易,因为它不包含重复的项目)?如果您尝试add项目中已有的项目,则会返回false

答案 1 :(得分:3)

这是一个提示:将整数添加到Set<Integer>,然后使用contains()检查刚刚输入的数字是否重复。

作为contains()的替代方法,您可以检查add()的返回值,如果返回false则抛出异常。

答案 2 :(得分:1)

如果您绝对必须使用数组,以下是检查重复条目的方法:

public boolean contains(int[] numbers, int searchedNumber) {
    for (int number : numbers) {
        if (number == searchedNumber) {
            return true;
        }
    }

    return false;
}    

修改

表达式for (int number : numbers)基本上意味着for each int of the int array do。在内部,创建了一个Iterator,然后用于迭代数组(或集合)的元素。

但目前,你可以认为它(语义上)与:

相同
for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] == searchedNumber) {
        return true;
    }
}

答案 3 :(得分:0)

无论您使用什么数据结构,对于您创建的每个条目,您都必须搜索(或让结构进行搜索)以查看条目是否存在。如果不是你添加和增加你的下标。再次检查算法的逻辑!