java:HashSet在输入重复的Integer值时显示错误消息

时间:2015-06-24 18:09:13

标签: java duplicates hashset

我必须编写一个程序,允许用户输入10个整数,并在每次用户输入之前使用HashSet输入的整数时显示错误消息。 到目前为止,我已经提出了这个问题,但问题是每次输入数字时都会出现错误消息。

package lesson1;
import java.util.*;

public class MyClass1{

public static void main(String[] args) {

    Set<Integer> h= new HashSet<Integer>();

    Scanner input= new Scanner(System.in);

    for(int i=0; i<10;i++){

        Object s=h.add(input.nextInt());

        if(s!=null){

            System.out.println("Duplicates are not allowed");
        }

    }


    System.out.println(h);


      }

}

3 个答案:

答案 0 :(得分:3)

如果元素存在,则

Set.add返回true,否则返回false。您正在检查结果为null。您需要将代码更改为:

    boolean nonDuplicate = h.add(input.nextInt());
    if(!nonDuplicate) {
       System.out.println("Duplicates are not allowed");
       // ...

答案 1 :(得分:1)

其实朋友你的以下情况是错误的

 Object s=h.add(input.nextInt());

    if(s!=null){

                System.out.println("Duplicates are not allowed");
            }

你必须用

替换它
boolean s=h.add(input.nextInt());

        if(!s){

                System.out.println("Duplicates are not allowed");
            }

答案 2 :(得分:1)

import java.io.*;
import java.util.*;
import java.lang.*;

public class mainactivity {
public static void main(String a[]) {
    Set<Integer> h = new HashSet<Integer>();

    Scanner input = new Scanner(System.in);

    for (int i = 0; i < 3; i++) {

        boolean check = h.add(input.nextInt());

        if (!check) {

            System.out.println("already exist");
        }
    }
    System.out.println(h);

}
}

这是工作代码