当if语句满足时,for循环停止

时间:2014-03-13 01:51:11

标签: if-statement for-loop

我试图计算使用此代码显示LinkedList中的唯一单词的次数:

        for(int i2 = 0; i2 < a.size(); i2++)
        {
            word2 = a.get(i2);
            for(int j2 = 0; j2 < a.size(); j2++)
            {
                if(word2 == a.get(j2))
                {
                    counter++;
                }
            }
            System.out.println(word2 + " : " + counter);
            counter = 0;
        } 

但柜台打印出来: 字母:1 好的:1 Apple:1 字母:1 好的:1 Apple:1 字母:1 好的:1 Apple:1

显然不止一个词,但计数器永远不会高于一个。我认为内部for循环在if语句满足时停止,但我不希望它。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

你应该使用

    word2.equals(a.get(j2))

使用“==”比较对那些不相等的字符串的引用。

顺便说一下,如果你有重复的话,你会多次为同一个单词打印计数器。假设您在列表中的2个位置上有Apple这个词。当你达到这两个位置时,计数器将达到2,你将打印(Apple:2)2次

答案 1 :(得分:0)

这对我来说似乎是java。您无法将字符串与(==)运算符进行比较。

 if(word2.equals(a.get(j2)))

答案 2 :(得分:0)

只是一个新的添加!!!

正如@ user3412998所建议的那样,最好使用Sets以避免重复。

现在,如果您只需要使用ArrayList,那么您需要使用一个元素并使用循环检查该元素是否有多个副本。如果您使用字符串或我的包含方法,则可以通过.equals方法检查条件你正在插入对象(别忘了在相应的类中覆盖你的equals方法)。这是一个非常繁琐的过程,我不推荐它。

我相信最简单的方法是不在数组列表中添加重复元素。完成下面的代码看看..

if(!a.contains(word)){
   a.add(word);
}

注意单词是一个String对象。

这里我在插入之前检查字符串已包含在ArrayList中的天气。 进行一些修改,以便您可以使用它,对阵列,或直接输入数据等。

我希望这有帮助..