如何在java中验证没有重复的int类型数据

时间:2016-12-10 03:48:44

标签: java

我想在点击按钮加载数据时检查txt文件是否包含重复数据。

例如ID,ID中的ID 0001
技术
0003

这是部分代码

while (scnr.hasNextInt()) 
{
   id  = scnr.nextInt();

   int checkid = id;
   if(checkid == id) {
        System.out.println("invalid id");
   } else{
        clients.put(new Integer(id), new Client(id));
   }
}

此代码不起作用 而且,我尝试过这种方法,但它也没有用。

    if(checkid.matches(id))
    {
        System.out.println("invalid id");
    }
  

无法在基本类型int

上调用matches(int)

我不明白为什么String类型数据可以使用.matches()但是int不能 我可以植入什么方法来验证int类型数据????

3 个答案:

答案 0 :(得分:3)

首先,你应该理解int不是一个类而是Java中的primitive type,你不能在它上面调用一个方法。

其次,您希望找到重复的元素,因此您应该尝试Set

最后,如果您不熟悉编程语言,可以尝试 Head First Java ;否则,您可能希望查看 Thinking In Java

答案 1 :(得分:0)

这是一个适合你的例子。使用HashSet存储id并检查Set是否包含id。

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class SetExample {

public static void main(String[] args) {

    Scanner scnr = new Scanner(System.in);
    Set<Integer> ids = new HashSet<>();
    int id;

    while (scnr.hasNextInt()) {
        id = scnr.nextInt();

        if (ids.contains(id)) {
            System.out.println("invalid id");
        } else {
            ids.add(id);
            clients.put(new Integer(id), new Client(id));
        }
    }
}
}

答案 2 :(得分:-1)

您的代码无法正常工作的原因非常明显:您将checkid设置为id,然后检查它们是否相等。如果要根据以前的ID检查每个新ID,则需要跟踪已读取的ID,例如: G。使用前面提到的ListSet

theese线上的东西会做:

List<Integer> ids = new ArrayList<>();
while (scnr.hasNextInt()) {
    id = scnr.nextInt();
    if (ids.contains(id)) {
       System.out.println("invalid id");
    } else {
        ids.add(id);
        clients.put(new Integer(id), new Client(id));
    }
}
  

我不明白为什么String类型数据可以使用.matches()但int不能。

Stringcomplex datatypeintprimitive datatype,不支持方法。无论如何,.matches()不会做这项工作,因为它与regular expression进行比较。 .equals会是更好的选择,但同样不是int