题目

编写程序读取一段英文文本,统计并输出其中包含的总单词数(以连续的一个或多个空格、制表符、换行符等空白字符作为单词分隔界限)。

输入格式:输入一段英文字符串文本(可多行,以文件结束符 EOF 或特定标记结束)。

输出格式:输出一个整数表示文本中包含的单词总数。

数据范围与约定:文本总字符数不超过 10000。

思路与算法

1. 状态机思想
维护布尔标记 in_word = 0 表示当前是否正处于单词内部。

2. 状态切换与单词计数
逐字符扫描:遇到非空白字符且 !in_word 时,说明进入了一个新单词的起始位置,words++; in_word = 1;;遇到空白字符(isspace(c))时,状态重置为 in_word = 0;。

完整程序

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int wordCount = 0;
        // Scanner 默认以连续空白字符(空格、换行、制表符)分割单词
        while (sc.hasNext()) {
            sc.next();
            wordCount++;
        }
        System.out.println(wordCount);
    }
}

运行示例

输入:

hello world java

输出:

3