You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在已用Character方法统计字母数字后统计字符串单词数及特殊字符

问题修正与代码实现

原代码问题分析

  1. 特殊字符统计逻辑错误:原代码公式颠倒且无意义,str.length()不可能小于0,正确逻辑应为特殊字符数 = 总字符数 - 字母数 - 数字数
  2. 单词数统计未实现:split("\\s++")未接收返回值,且未处理空格边界、连续空格等情况
  3. 冗余代码:循环内重复执行split无意义,无用的Iterator导入,变量命名不清晰

修正后完整代码

package Shak;

import java.util.Scanner;

public class Lesson { // 修正类名拼写错误

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();

        int alphabets = 0;
        int numbers = 0;
        int specialChars = 0;
        int words = 0;

        // 统计字母、数字、特殊字符
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (Character.isLetter(c)) {
                alphabets++;
            } else if (Character.isDigit(c)) {
                numbers++;
            } else {
                specialChars++;
            }
        }

        // 统计单词数:处理开头/结尾空格、连续空格情况
        boolean inWord = false;
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (!Character.isWhitespace(c)) {
                if (!inWord) {
                    words++;
                    inWord = true;
                }
            } else {
                inWord = false;
            }
        }

        // 输出结果
        System.out.println("总字符数:" + str.length());
        System.out.println("字母数:" + alphabets);
        System.out.println("数字数:" + numbers);
        System.out.println("特殊字符数:" + specialChars);
        System.out.println("单词数:" + words);
    }
}

关键逻辑说明

  1. 特殊字符统计:遍历每个字符,直接将非字母、非数字的字符归类为特殊字符,无需复杂计算,直观准确。
  2. 单词数统计:
    • 通过inWord标记跟踪是否处于单词中,遇到非空格字符且未在单词内时,单词数加1并标记进入单词;遇到空格时标记退出单词。
    • 该方法能完美处理开头/结尾空格、连续多个空格的场景,避免正则分割的空字符串问题。

测试示例

输入:Hello World! 123
输出:

总字符数:14
字母数:10
数字数:3
特殊字符数:1
单词数:2

输入: Java is fun!!!
输出:

总字符数:16
字母数:9
数字数:0
特殊字符数:7
单词数:3

内容的提问来源于stack exchange,提问作者gone4-1000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:22:19