输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
本题要求对用户输入的一行字符串进行字符分类统计。具体包括四类字符:
数字:'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);
}
}