gpt4 book ai didi

java - 为什么检查哈希集是否已作为 boolean 值添加返回 false

转载 作者:行者123 更新时间:2023-12-02 01:52:48 24 4
gpt4 key购买 nike

我希望我的问题措辞正确。如果我取消注释 System.out.println(hs.add(ar)); 行,这里是一段代码控制台将打印 true,那么为什么要到达以下 if 语句内部呢?

public static void duplicateExists(String [] array)
{
Set<String> hs = new HashSet<String>();
for (String ar : array)
{
// System.out.println(hs.add(ar));
if((hs.add(ar)) == false);
{
System.out.println("reaches here every time but shouldn't ");
}
}
}

public static void main(String[] args) {
duplicateExists(new String[] {"1","2","5","3","6","8"});
}

最佳答案

这一行:

if((hs.add(ar)) == false);

由于结尾分号而什么也不做。尽管 if 的条件从未得到满足,但该元素实际上已添加到集合中。

然后,您将获得以下代码块:

{
System.out.println("reaches here every time but shouldn't ");
}

这很尴尬,但是在 Java 中,您可以使用大括号括住任意代码块。这个总是被执行,因为(由于分号)完全独立于前一个 if

尝试删除分号:

if ((hs.add(ar)) == false) {
System.out.println("reaches here every time but shouldn't");
}

格式化代码可能被认为不是很重要,但这里的一个案例清楚地表明,当代码格式不正确时,可能会发生不直观、意外、难以调试的问题。

此外,您可以简化代码:

if (!hs.add(ar)) {
System.out.println("reaches here every time but shouldn't");
}

现在它无法到达println

关于java - 为什么检查哈希集是否已作为 boolean 值添加返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52710845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com