题目
编写程序读取一段英文文本,统计并输出其中包含的总单词数(以连续的一个或多个空格、制表符、换行符等空白字符作为单词分隔界限)。
输入格式:输入一段英文字符串文本(可多行,以文件结束符 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