用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-122
    englishCount++;
    continue;
  }
  //空格的ascii码值是32
  if(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-122
                englishCount++;
                continue;
            }
            //空格的ascii码值是32
            if(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.运行截图

java 将数字转化为大写中文 java数字转英文字母_java 将数字转化为大写中文