计算有多少单词包含字符串中的字符时得到错误的值
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()
,就好像 args
是 InputStream
上的 Scanner
。这意味着它将读取的令牌递增到超过字符串 returns,并且该令牌不能递减。
您需要以不同的方式访问 args
。尝试在简单的 for 循环中使用 args[i]
。这样就避免了问题。
我正在开发一个程序,该程序获取一个字符串作为输入,并按顺序遍历字符串中的每个字符并打印包含该字符的单词数。
例如:
输入: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()
,就好像 args
是 InputStream
上的 Scanner
。这意味着它将读取的令牌递增到超过字符串 returns,并且该令牌不能递减。
您需要以不同的方式访问 args
。尝试在简单的 for 循环中使用 args[i]
。这样就避免了问题。