Java字符串单词计数程序含多空格仍输出正确原因咨询
连续空格场景下单词计数逻辑正常的原因
你提供的代码如下:
public class CountingtheCharactersinString { public static void main(String[] args) { String name = "This is my first demo"; int count = 0; boolean b = true; for(int i =0; i<name.length(); i++) { if(name.charAt(i)==' ') b = true; else if(b==true) { b= false; count = count+1; } } System.out.println(count); } }
这段代码本身就是为适配连续空格场景设计的单词计数逻辑,核心依赖布尔变量b作为状态标记实现,和是否仅判断单个空格无关,具体运行逻辑如下:
- 变量
b的含义为「当前是否处于单词分隔状态」,值为true代表上一个遍历到的字符是空格/还未遍历到任何非空格字符 - 遍历每一个字符时的判断逻辑:
- 只要当前字符是空格,就把
b设置为true。连续空格场景下,只会反复把已经是true的b重新赋值为true,不会产生其他操作,也不会触发计数 - 只有当前字符不是空格,且
b为true时,才会触发计数,同时把b设置为false。这一规则保证了一个单词只会在第一个字符的位置被统计一次,单词后续字符不会重复计数
- 只要当前字符是空格,就把
- 以你给出的示例字符串为例,连续空格只会维持
b为true的状态,直到下一个单词的第一个字符出现才会触发一次计数,最终统计得到的单词数5就是正确结果。
内容的提问来源于stack exchange,提问作者Suraj Paudel
相关产品推荐
相关产品推荐

