- import java.util.Map;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.io.InputStreamReader;
- import java.io.BufferedReader;
- import java.io.IOException;
- /**
- @classname:字符串相关参数统计类
- @description:其实完成此题并不需要划分这么多函数,也不应该用到集合的知识。
- 但是我还是用了,因为我认为获得做题就是练习自己的技术并且每一个小题都应该当成是
- 一个大的软件做,所以我进行了一系列函数功能的划分,并且把学到的集合的知识用到了此处。
- 当然因为集合只能存储引用类型,所以也涉及到自动装箱拆箱的知识。
- 此程序完全基于EditPlus开发,无IDE工具使用。
- @author:Tad http://weibo.com/weinabanta
- */
- public class Statistics
- {
- /**
- 主函数,统筹整个统计工作的进行。
- */
- public static void main(String[] args) throws IOException
- {
- String inputLine = getString();
- Map<String,Integer> staResult = count(inputLine);
- printInfo(staResult);
- }
- /**
- 从控制台读取字符串并返回
- @return 用户输入的字符串
- */
- private static String getString() throws IOException
- {
- System.out.print("输入字符串:");
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- return br.readLine();
- }
- /**
- 对字符串进行相应参数统计
- @param 需要统计的字符串
- @return 统计结果,存储在集合中
- */
- private static Map<String,Integer> count(String lineNeedToCount)
- {
- Integer lettersNum = 0;
- Integer spacesNum = 0;
- Integer numbersNum = 0;
- Integer othersNum = 0;
- char[] charArr = lineNeedToCount.toCharArray();
- for(int i = 0;i < charArr.length;i++)
- {
- if((charArr[i] >= 65 && charArr[i] <= 90)||(charArr[i] >= 97 && charArr[i] <= 122))
- {
- lettersNum++;
- }
- else if(charArr[i] == 32)
- {
- spacesNum++;
- }
- else if(charArr[i] >= 48 && charArr[i] <= 57)
- {
- numbersNum++;
- }
- else
- {
- othersNum++;
- }
- }
- Map<String,Integer> map = new HashMap<String,Integer>();
- map.put(" 字符个数",lettersNum);
- map.put(" 空格个数",spacesNum);
- map.put(" 数字个数",numbersNum);
- map.put(" 其它个数",othersNum);
- return map;
- }
- /**
- 形式打印结果
- @param 需要打印的结果
- */
- private static void printInfo(Map<String,Integer> resultNeedToPrint)
- {
- System.out.println("统计结果如下:");
- Iterator<String> keySet = resultNeedToPrint.keySet().iterator();
- while(keySet.hasNext())
- {
- String key = keySet.next();
- Integer val = resultNeedToPrint.get(key);
- System.out.println(key+" --- "+val);
- }
- }
- }
复制代码 |