java - 哈希集在java中获取空字符串作为元素

标签 java hashset

我试图向哈希集中添加元素,但它得到一个空元素。

最初我尝试过,

import java.util.*;

public class SetTrial{

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        HashSet<String> names = new HashSet<String>();
        for(int j=0; j<number;j++)
        {
            String text = sc.nextLine();
            names.add(text);
        }
        System.out.println(names);
    }
}

当我输入时,

5
a
b
c
d
e

它似乎只接受输入直到 d并执行打印显示

[, a, b, c, d]

我的猜测是它在开始时接受换行符,所以我添加了 sc.next()在代码中。

import java.util.*;

public class SetTrial{

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        HashSet<String> names = new HashSet<String>();
        sc.next();
        for(int j=0; j<number;j++)
        {
            String text = sc.nextLine();
            names.add(text);
        }
        System.out.println(names);
    }
}

虽然这次看起来正确地接受了所有的输入,但结果是

[, b, c, d, e]

所以问题一定是别的原因。我该如何解决这个问题?

最佳答案

第二种方法几乎是正确的。
只需将 sc.next() 替换为 sc.nextLine()

关于java - 哈希集在java中获取空字符串作为元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40067641/

相关文章:

java - 如何将 @ManagedAttribute 和 @ManagedOperation 添加到扩展另一个类的 MBean

java - 使用io.vertx.core.json库读取JAVA中的Json文件

java - 当 HashSet 的初始容量(即 16)被填满时,新容量是如何计算的?公式是什么?

java - Knights Path 解决方案的 HashSet 和 LinkedHashSet 之间的行为差​​异

java - 扩展方法中的返回类型哈希表

Java Android方法需要很长时间才能执行?

java - java axis2 Web服务的部署问题

java - onRequestPermissionsResult 方法不会覆盖其父类(super class)中的方法吗?

java - HashSet顺序及与JDK 7/8的区别

java - 无法计算出 HashSet 的输出?