黑马程序员技术交流社区

标题: 对一个字符串进行分类和统计 [打印本页]

作者: zapoo    时间: 2016-2-18 17:07
标题: 对一个字符串进行分类和统计
  1. import java.util.Scanner;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;

  4. public class Test2 {

  5.         /**
  6.          * 从键盘录入一个字符串实现:
  7.          *                 1.大写字母字符,小写字母字符,数字字符出现的次数,其他字符出现的次数,
  8.          *                 2.分别输出大写字母 小写字符 数字 其他字符。
  9.          *                        
  10.          *                 getCount()方法实现
  11.          *                         定义统计变量,遍历该字符串,判断是否为相应的数据,如果是,则相应的统计变量加1,
  12.          *                         输出最后的统计变量值
  13.          *                
  14.          *                 splitString()方法实现
  15.          *                         按照正则表达式进行匹配,如果匹配成功就输出来.
  16.          *
  17.          *                 splitStringResult(line)
  18.          *                         格式化输出所要的信息
  19.          */
  20.         public static void main(String[] args) {
  21.                 Scanner sc = new Scanner(System.in);
  22.                 System.out.println("请输入一个字符串:");
  23.                 String line = sc.nextLine();
  24.                
  25.                 getCount(line);
  26.                
  27.                 splitStringResult(line);
  28.         }

  29.         private static void splitStringResult(String line) {
  30.                 String regex = "[A-Z]";
  31.                 String regex1 = "[a-z]";
  32.                 String regex2 = "\\d";
  33.                 String regex3 = "[^a-zA-Z^0-9]";
  34.                
  35.                 System.out.print("大写字母为:");
  36.                 splitString(line, regex);
  37.                 System.out.println();
  38.                
  39.                 System.out.print("小写字母为:");
  40.                 splitString(line, regex1);
  41.                 System.out.println();
  42.                
  43.                 System.out.print("数字字母为:");
  44.                 splitString(line, regex2);
  45.                 System.out.println();
  46.                
  47.                 System.out.print("其他字母为:");
  48.                 splitString(line, regex3);
  49.         }

  50.         private static void splitString(String line, String regex) {
  51.                 Pattern p = Pattern.compile(regex);
  52.                 Matcher m = p.matcher(line);
  53.                
  54.                 while(m.find()) {
  55.                         System.out.print(m.group());
  56.                 }
  57.         }

  58.         private static void getCount(String line) {
  59.                 char[] arr = line.toCharArray();
  60.                
  61.                 int bigChar = 0;
  62.                 int smallChar = 0;
  63.                 int number = 0;
  64.                 int otherChar = 0;
  65.                 for (int i = 0; i < arr.length; i++) {
  66.                         if(arr[i] >= 'A' && arr[i] <= 'Z') {
  67.                                 bigChar++;
  68.                         }else if(arr[i] >= 'a' && arr[i] <='z') {
  69.                                 smallChar++;
  70.                         }else if(arr[i] >= '0' && arr[i] <= '9') {
  71.                                 number++;
  72.                         }else {
  73.                                 otherChar++;
  74.                         }
  75.                 }
  76.                
  77.                 System.out.println("大写字母个数为:" + bigChar);
  78.                 System.out.println("小写字母个数为:" + smallChar);
  79.                 System.out.println("数字字母个数为:" + number);
  80.                 System.out.println("其他字母个数为:" + otherChar);
  81.         }

  82. }
复制代码


捕获1.PNG (7.86 KB, 下载次数: 9)

运行结果

运行结果

作者: diaokb    时间: 2016-2-18 18:12
楼主贴一段程序 想说明什么呢  
作者: zapoo    时间: 2016-2-18 18:15
diaokb 发表于 2016-2-18 18:12
楼主贴一段程序 想说明什么呢

并不想说明什么啊,只是把所学的东西运用一下,然后挣点分吧了,你想说明什么呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2