双列集合和正则表达式使用的经典题目:录入字符串并且统计

/*键盘录入一个字符串,分别统计出其中英文字母、空格、数字和其它字符的数量,
输出结果:”其他=1, 空格=2, 字母=12, 数字=6”*/

 

核心思想:

对相同基本类型的个数统计,正则表达式的使用

单独写一个方法,对双列集合存储(经典判断三步骤);

利用双列集合,key值是String类型,value值是Integer类型记录个数

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class Test {

    public static void main(String[] args) {
        System.out.println("请输入一个字符串.....");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        char[] ch = input.toCharArray();
        HashMap<String,Integer> hm = new HashMap<>();
        
        for (char c : ch) {
            if( c <= 'z' && c >='a' || c >='A' && c <='Z') {
                countingkey(hm ,"字母");
            }else if(c == ' '){
                countingkey(hm ,"空格");
            }else if('0' <= c && c <= '9'){
                countingkey(hm ,"数字");
            }else{
                countingkey(hm ,"其他");
            }
        }
        System.out.println(hm);
        //用键值对方式遍历双列数组
        Set<Entry<String,Integer>> entrys =  hm.entrySet();
        for (Entry<String, Integer> entryss : entrys) {
            if(entryss.getKey().equals(" ")) {
                hm.put("空格", entryss.getValue());
            }else if(entryss.getKey().equals(" ")) {
                
            }
        }
    }
    public static void countingkey(HashMap<String,Integer> map,String key) {
        Integer num = map.get(key);
        if(num == null) {
            map.put(key, 1);
        }else {
            map.put(key, num+1);
        }
    }
}

 

posted @ 2018-03-16 23:48  cheney-yang  阅读(228)  评论(0编辑  收藏  举报