1 import java.util.Scanner;
2
3 /**
4 * 输入一行字符,分别统计出其中的中英文字母,空格,数字和其他字符的个数
5 *
6 * @author xcx
7 * @time 2017年7月22日上午9:08:16
8 */
9 public class Practice7 {
10
11 public static void main(String[] args) {
12 System.out.println("请输入一串字符串,我们将统计出其中的中英文字母,空格,数字和其他字符的个数");
13 Scanner scanner = new Scanner(System.in);
14 String string = scanner.nextLine();
15
16 int numbersOfBlack = getNumbersOfBlack(string);
17 int numbersOfChinese = getNumbersOfChinese(string);
18 int numbersOfOthers = getNumbersOfOthers(string);
19 int numbersOfFigure = getNumbersOfFigure(string);
20 int numbersOfEnglish = getNumbersOfEnglish(string);
21
22 System.out.println("数字有:" + numbersOfFigure + "个");
23 System.out.println("英文有:" + numbersOfEnglish + "个");
24 System.out.println("空格有:" + numbersOfBlack + "个");
25 System.out.println("汉字有:" + numbersOfChinese + "个");
26 System.out.println("其它有:" + numbersOfOthers + "个");
27 }
28
29 // 求字符串中空格的个数
30 public static int getNumbersOfBlack(String string) {
31 // 记录字符串中空格的个数
32 int numbersOfBlack = 0;
33 // 将输入的字符串转化为字符数组
34 String[] strings = string.split("");
35 for (int i = 0; i < strings.length; i++) {
36 if (strings[i].matches(" ")) {
37 numbersOfBlack++;
38 }
39 }
40 return numbersOfBlack;
41 }
42
43 // 求字符串中汉字的个数
44 public static int getNumbersOfChinese(String string) {
45 // 记录字符串中汉字的个数
46 int numbersOfChinese = 0;
47 // 将输入的字符串转化为字符数组
48 String[] strings = string.split("");
49 for (int i = 0; i < strings.length; i++) {
50 if (strings[i].matches("[\u4e00-\u9fa5]")) {
51 numbersOfChinese++;
52 }
53 }
54 return numbersOfChinese;
55 }
56
57 // 求字符串中英语字母的个数
58 public static int getNumbersOfEnglish(String string) {
59 // 记录字符串中英语字母的个数
60 int numbersOfEnglish = 0;
61 // 将输入的字符串转化为字符数组
62 String[] strings = string.split("");
63 for (int i = 0; i < strings.length; i++) {
64 if (strings[i].matches("[a-zA-Z]")) {
65 numbersOfEnglish++;
66 }
67 }
68 return numbersOfEnglish;
69 }
70
71 // 求字符串中数字的个数
72 public static int getNumbersOfFigure(String string) {
73 // 记录字符串中数字的个数
74 int numbersOfFigure = 0;
75 // 将输入的字符串转化为字符数组
76 String[] strings = string.split("");
77 for (int i = 0; i < strings.length; i++) {
78 if (strings[i].matches("[0-9]")) {
79 numbersOfFigure++;
80 }
81 }
82 return numbersOfFigure;
83 }
84
85 // 求字符串中数字的个数
86 public static int getNumbersOfOthers(String string) {
87 // 记录字符串中数字的个数
88 int numbersOfOthers = string.split("").length
89 - getNumbersOfBlack(string) - getNumbersOfChinese(string)
90 - getNumbersOfEnglish(string) - getNumbersOfFigure(string);
91 return numbersOfOthers;
92 }
93 }