计算有多少单词包含字符串中的字符时得到错误的值

Getting wrong values counting how many words contain a character in a String

我正在开发一个程序,该程序获取一个字符串作为输入,并按顺序遍历字符串中的每个字符并打印包含该字符的单词数。

例如:

输入:no i in eye

输出:n=2 o=1 i=2 i=2 n=2 e=1 y=1 e=1

但是我的代码 returns 某些字符的值错误,我无法弄清楚错误在哪里。

这就是我的代码 returns :

n=2 o=3 i=2 i=2 n=4 e=1 y=2 e=3 

这是我的代码:

    public static void main(String[] args) {


    for (String word1 : args) {
        int len = word1.length();
        int counter=0;
        for (int i = 0; i < len; i++) {
            char letter = word1.charAt(i);
            for (String word2 : args ){
                if (word2.contains(""+letter))
                    counter++;



            }
            System.out.print(letter+"="+counter+" ");
        }

    }


}

移动到下一个 letter 后重置您的 counter:

for (String word1 : args) {
    int len = word1.length();
    for (int i = 0; i < len; i++) {
        char letter = word1.charAt(i);
        int counter=0;                            //here !
        for (String word2 : args ){
            if (word2.contains(""+letter))
                counter++;
        }
        System.out.print(letter+"="+counter+" ");
    }

}

看来您可能需要在其他位置重置计数器。

编辑: 我的意思是,您应该在外循环中包含另一个 counter = 0;

已有回复显示上面列出的代码示例,因此我不再重复。

您需要使用不同于 for-each 循环的循环结构。 for-each 循环的行为类似于调用 args.next(),就好像 argsInputStream 上的 Scanner。这意味着它将读取的令牌递增到超过字符串 returns,并且该令牌不能递减。

您需要以不同的方式访问 args。尝试在简单的 for 循环中使用 args[i]。这样就避免了问题。