1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 用java实现输入一行字符 分别统计出其中中文汉字 英文字母 空格 数字和其它字符的个数

用java实现输入一行字符 分别统计出其中中文汉字 英文字母 空格 数字和其它字符的个数

时间:2021-10-22 18:35:22

相关推荐

用java实现输入一行字符 分别统计出其中中文汉字 英文字母 空格 数字和其它字符的个数

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

1.分析

1.1 如何进行输入?

需要输入一行字符意味着需要建立一个Scanner对象,用来获取接收的内容

而接收的内容中包含空格,因而选择Scanner对象中的nextLine()方法

注意:Scanner对象名.next()方法是以空格为分隔符进行相应输出的。

1.2 如何统计字符数量?

1.2.1 如何获取到每个字符?

a.把得到的一行字符String对象通过toCharArray方法转换成字符数组

b.然后对字符数组进行遍历,即可获取每个字符数组元素个数

1.2.2 如何辨别是哪种字符?(字符判断规则)

a 中文汉字判断规则如下:

是否属于中日韩越统一表意文字(CJK_UNIFIED_IDEOGRAPHS),若是,则代表是中文

b 英文字母判断规则如下:

是否属于小写字母的ASCII值范围([97,122])或者大写字母的ASCII值范围([65,90])

c 空格判断规则如下:

是否等于空格对应的ASCII值(32)

d 数字判断规则如下:

是否属于数字对应的ASCII值范围[48,57]

f 数字判断规则如下:

a、b、c、d条件均不满足,就代表其是其他字符

2.思路总结

a.定义一个Scanner对象,通过.nextLine方法来接收输入的一行字符对应的字符串

Scanner scanner=new Scanner(System.in);String a=scanner.nextLine();

b.对接收到的字符串通过toCharArray方法来拆分成字符数组

char[] charArrays=a.toCharArray();

c.对字符数组进行遍历,在这个过程中,对每个字符内容进行判断,对符合条件的计数器进行加1

for(int i=0;i<charArrays.length;i++){if(Character.UnicodeBlock.of(charArrays[i])==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS){//判断是否是中文汉字,若是中文计数器+1,//此时无需进行后面的判断操作,直接开启(continue)下一次循环chineseCount++;continue;}if((charArrays[i]>=65&&charArrays[i]<=90)||(charArrays[i]>=97&&charArrays[i]<=122)){//判断是否为英文字母, A-Z 65-90 a-z 97-122englishCount++;continue;}//空格的ascii码值是32if(charArrays[i]==32){blankCount++;continue;}//数字0~9对应的ASCII码范围为[48,57]if((charArrays[i]>=48&&charArrays[i]<=57)){//判断是否为数字numberCount++;continue;}//当不是中文汉字、英文字母、空格、数字时,那么就代表它是其他字符了otherCharacterCount++;}

d.输出相应的结果

System.out.println("中文汉字的个数为: "+chineseCount);System.out.println("英文字母的个数为: "+englishCount);System.out.println("空格的个数为: "+blankCount);System.out.println("数字的个数为: "+numberCount);System.out.println("其他字符的个数为: "+otherCharacterCount);

3.源代码

import java.util.Scanner;public class Demo {public static void main(String[] args) {System.out.println("输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。");//本次使用Scanner里面的.nextLine();因为一行字符中有空格,next()方法读取不了空格Scanner scanner=new Scanner(System.in);String a=scanner.nextLine();char[] charArrays=a.toCharArray();//System.out.println((int)'a');Character.UnicodeBlock ub=null;int chineseCount=0,englishCount=0,blankCount=0,numberCount=0,otherCharacterCount=0;/* chineseCount代表中文汉字的个数englishCount代表英文汉字的个数blankCount代表空格的个数numberCount代表数字的个数otherCharacterCount代表其他字符的个数*/for(int i=0;i<charArrays.length;i++){if(Character.UnicodeBlock.of(charArrays[i])==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS){//判断是否是中文汉字chineseCount++;continue;}if((charArrays[i]>=65&&charArrays[i]<=90)||(charArrays[i]>=97&&charArrays[i]<=122)){//判断是否为英文字母, A-Z 65-90 a-z 97-122englishCount++;continue;}//空格的ascii码值是32if(charArrays[i]==32){blankCount++;continue;}//数字0~9对应的ASCII码范围为[48,57]if((charArrays[i]>=48&&charArrays[i]<=57)){//判断是否为数字numberCount++;continue;}//当不是中文汉字、英文字母、空格、数字时,那么就代表它是其他字符了otherCharacterCount++;}System.out.println("中文汉字的个数为: "+chineseCount);System.out.println("英文字母的个数为: "+englishCount);System.out.println("空格的个数为: "+blankCount);System.out.println("数字的个数为: "+numberCount);System.out.println("其他字符的个数为: "+otherCharacterCount);}}

4.运行截图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。