源本科技 | 码上会

字符分类统计

2026/01/26
10
0

题目

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

说明

本题要求对用户输入的一行字符串进行字符分类统计。具体包括四类字符:

  • 数字:'0' 到 '9'

  • 英文字母:'a' 到 'z' 或 'A' 到 'Z'

  • 空格:仅指 ASCII 空格字符(' ')

  • 其他字符:不属于上述三类的所有字符(如标点符号、中文字符、制表符等)

程序通过将字符串转换为字符数组,然后遍历每个字符,使用 if-else 条件判断语句对字符类型进行识别并计数。

运行示例

请输入一个字符串:Hello World! 123 @#$
数字个数:3
英文字母个数:10
空格个数:3
其他字符个数:3
👈点击左箭头查看答案(一定要在自己思考并实现后再看参考答案哦!)

规律分析

  • 每个字符只能属于且仅属于一个类别;

  • 判断顺序很重要:先判断数字,再判断字母,再判断空格,其余归为“其他”;

  • 使用 char 类型的比较基于 ASCII 值,因此可直接用关系运算符(如 >=<=)进行范围判断;

  • 中文、特殊符号、换行符(如果存在)等都会被计入“其他字符”。

程序实现

import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args){
        System.out.print("请输入一个字符串:");
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        char[] ch = str.toCharArray();
        Count use = new Count();
        use.count(ch);
    }
}

class Count {
    int digital, character, blank, other;
    
    public void count(char[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= '0' && arr[i] <= '9') {
                digital++;
            } else if ((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] >= 'A' && arr[i] <= 'Z')) {
                character++;
            } else if (arr[i] == ' ') {
                blank++;
            } else {
                other++;
            }
        }
        System.out.println("数字个数:" + digital);
        System.out.println("英文字母个数:" + character);
        System.out.println("空格个数:" + blank);
        System.out.println("其他字符个数:" + other);
    }
}