题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
分析:利用while语句,条件为输入的字符不为'\n'.
1 import java.util.*;
2 public class Prog7{
3 public static void main(String[] args) {
4 System.out.println("请输入一串字符:");
5 Scanner scan=new Scanner(System.in);
6 //注:Scanner类中的next()方法遇到空格就不进去了,比如说输入haha nene就只会得到haha,空格后面的都被忽略了,因此要用nextLine()
7 String str=scan.nextLine();//将一行字符转化为字符串
8 scan.close();
9 count(str);
10 }
11 //统计输入的字符数
12 private static void count(String str) {
13 String E1="[\u4e00-\u9fa5]";//此处使用了正则表达式[]匹配一个汉字。汉字Unicode 编码范围u4e00-u9fa5
14 String E2="[a-zA-Z]";//此处使用了正则表达式[],匹配所有字母
15 String E3="[0-9]";//此处使用了正则表达式[],匹配所有数字
16 String E4="[\\s]";//空格为\s,此处使用了转义字符
17 int countChinese=0;
18 int countLetter=0;
19 int countNumber=0;
20 int countSpace=0;
21 int countOther=0;
22 char[] array_Char=str.toCharArray();//将字符串转化为字符数组
23 String[] array_String=new String[array_Char.length];//汉字只能作为字符串处理
24 for(int i=0;i<array_Char.length;i++)
25 array_String[i]=String.valueOf(array_Char[i]);
26 //遍历字符串数组中的元素
27 for(String s:array_String) {
28 if(s.matches(E1))
29 countChinese++;
30 else if(s.matches(E2))
31 countLetter++;
32 else if(s.matches(E3))
33 countNumber++;
34 else if(s.matches(E4))
35 countSpace++;
36 else
37 countOther++;
38 }
39 System.out.println("输入的汉字个数:"+countChinese);
40 System.out.println("输入的字母个数:"+countLetter);
41 System.out.println("输入的数字个数:"+countNumber);
42 System.out.println("输入的空格个数:"+countSpace);
43 System.out.println("输入的其他字符个数:"+countOther);
44 }
45 }
46 /*运行结果
47 请输入一串字符:
48 中文AbC 1234.、
49 输入的汉字个数:2
50 输入的字母个数:3
51 输入的数字个数:4
52 输入的空格个数:2
53 输入的其他字符个数:2
54 */
The only way to do great work is to love what you do.