java笔试题:输入一个字符串,判断其中大写字母、小写字母、数字、中文汉字、特殊字符,并统计它们的个数

本文介绍了一种使用Java程序统计输入字符串中大写字母、小写字母、数字、汉字及特殊字符数量的方法。通过正则表达式和Java API提供的方法实现了高效准确的字符分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题外话:最近在笔试中遇到了这个题,看着好像做过,但是中文和特殊符号确实有点难区分。又想着再用啥if('A'<str<'Z')这样比较low的判断,未免就太掉价了。在csdn上搜了大半天,瞅了瞅都不是很满意,就自己写了一个,认为目前为之最起码不是掉价的代码,大家可以参考一下,话不多说,上代码!
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CountChar {
	public static void main(String[] args) {
		//先获取标准输入,Scanner类,生成一个input对象
		Scanner input = new Scanner(System.in);
		//用对象调用方法,由于我们要输入的是字符串,因此是String类型的
		String str = input.next();
		//把输入的字符串转为字符数组,目的是为了一个字符一个字符的对比
		char[] arr = str.toCharArray();
		//利用正则表达式通过Unicode编码来判断汉字和特殊字符
		String regEx = "[\u4e00-\u9fa5]";
		
		//Pattern pattern = Pattern.compile(regEx);
		
		int  bigCount = 0;	//统计大写字母的个数
		int  smallCount = 0;	//统计小写字母的个数
		int numberCount = 0;	//统计数字的个数
		int chineseCount = 0;	//统计中文汉字的个数
		int otherCount = 0;		//统计特殊字符的个数
		
		String temp;	//这个用于在if里调用String类里的判断方法,属于中间引用量吧,后面就明白了
		
		for (int i = 0; i < arr.length; i++) {
			//判断是否为大写字母,利用的是javaAPI文档里的方法
			if (Character.isUpperCase(arr[i])) {
				
				bigCount++;
				continue;
				
			}
			//判断是否为数字,利用的javaAPI文档里的方法
			if (Character.isDigit(arr[i])) {
				numberCount++;
				continue;
			}
			//判断是否为大写字母,利用的是javaAPI文档里的方法
			if (Character.isLowerCase(arr[i])) {
				smallCount++;
				continue;
			}
			//下面这些注释,是另一种方法,不过输入用例有bug。
			/*Matcher matcher = pattern.matcher(str);
			
			if (matcher.find()) {
				
			}
			temp = String.valueOf(arr[i]);*/
			
			temp = String.valueOf(str.charAt(i));
			//判断是否为中文汉字,统计其中的个数
			if (temp.matches(regEx)) {
				
				//matcher.find()
				chineseCount++;
				
				continue;
			}
			//其他的都判断完了,该跳出本次循环的都跳出了,没有跳出的就是剩下的特殊字符了。
			otherCount++;
				
		}
		System.out.println("大写字母的个数:"+bigCount);
		System.out.println("小写字母的个数:"+smallCount);
		System.out.println("数字的个数:"+numberCount);
		System.out.println("汉字的个数:"+chineseCount);
		System.out.println("特殊字符的个数:"+otherCount);
	}

}
代码写的还有注释,大家都明白了吧。再插句嘴,那个判断中文字符的,我用我注释的方法,如果你要先输入中文再接着输入特殊字符,它会自动识别为全部是中文。我纠结了半天。后来在网上看到的目前用的方法不会出现那个问题。我估计应该是java自己封装的方法有点毛病。最后,大家感觉对自己有帮助,请为俺点个赞,让俺也知道自己的辛苦有用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“小笨熊”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值