哈希集计数比较java

ilmyapht  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(401)

我想要实现的是计算输入中具有相同值的字符串的数目。

Scanner reader = new Scanner(System.in);

Set group1 = new HashSet();
Set group2 = new HashSet();
Set self = new HashSet();

for (int i = 1; i <= 3; i++) {
    System.out.print("Enter birt month " + i + ": ");
    group1.add(reader.next());
}

for (int i = 1; i <= 3; i++) {
    System.out.print("Enter birt month " + i + ": ");
    group2.add(reader.next());
}
System.out.print("Enter your birth month: ");
self.add(reader.next());

if (group1.contains(self) || group2.contains(self)) {
    count++;
}
System.out.println("You have the same birth month with " + count + " of your classmate.");

但我没有得到应有的价值,我得到的是即使 group1 或者 group2HashSet 命名 self 计数器没有上升,一直是0,我不知道为什么。任何提示或请帮助我如何做到这一点。我也试着反过来把if语句转换成 self.contains(group1) || self.contains(group2); 以确定自身是否具有相同的组1或组2
解决了的!!
我所需要的只是 containsAll 如果 group1 以及 group2 在一个叫 self

3pmvbmvn

3pmvbmvn1#

所以,你的问题是这个。 group1.contains(self) 检查对象 self 存在于第1组中,而不是这里的情况。
在这里,你想把它和一个集合进行比较 self 这是一个集合。
改变 group1.contains(self)group1.containsAll(self) .

pepwfjgg

pepwfjgg2#

另外,我发现的另一个问题是,递增的count变量只有一次if。我的建议是,使用2如果条件如下,

int count = 0;
    if (group1.containsAll(self)) {
        count++;
    }

    if (group2.containsAll(self)) {
        count++;
    }

如果两个集合都有“self”,则上述条件会起作用

相关问题