统计字符串中字幕出现的数量(Map案例)
ops:里面的entry其实是map包含的一部分,一个map由很多entry包含,每个entry都由<key,value>组成,就像一本书(Map)由很多页组成(entry)每一页又有页码(KEY)和内容(VALUE)
-
问题描述
控制台录入一个字符串,程序经过统计最后输出这个字符串中每个字母出现的次数
-
解题思路
- 在
Statistics
类中添加statis()
方法,该方法参数为一个字符串,返回值类型为一个Map
集合。 statis()
方法要求传入一个字符串,统计该字符串中每个字母出现的次数,将字母和其出现次数存入Map
集合中并返回出去。- 控制台输入一个字符串,将其传入
statis()
方法,控制台输出字符串中每个字母出现的次数,最终结果的格式参照「测试验证」中截图的格式。 - 为避免后台检测不通过,使用
Scanner
对象进行输入字符串时请使用next()
方法。
1先将字符串转为字符数组,便于操作遍历
2取其中一个字符,判断其是否为字母,如果是那么判断map中是否出现过,如果出现过就次数加一,最后在将该字母和该次数put进map,已存在的key只会更新,以前没存在的key会加入
3最后的遍历在主函数,细节上一篇写过
- 在
-
我的代码
package org.lanqiao.main; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.Set; import java.util.Map.Entry; public class Statistics { public static void main(String[] args) { Scanner input = new Scanner(System.in); String str = input.next(); Map<Character, Integer> map = new HashMap<Character, Integer>(); map = statis(str); Set<Entry<Character, Integer>> entrySet = map.entrySet(); Iterator<Entry<Character, Integer>> it=entrySet.iterator(); while(it.hasNext()){ Entry<Character, Integer> entry=it.next(); System.out.println(entry.getKey()+"="+entry.getValue()); } } public static Map statis(String s){ Map<Character,Integer> map=new HashMap<Character,Integer>(); char[] chars=s.toCharArray(); char itemChar; int num=0; for(int i=0;i<chars.length;i++){ num=1; itemChar=chars[i]; if((itemChar>='a'&&itemChar<='z')||(itemChar>='A'&&itemChar<='Z')){ if(map.containsKey(itemChar)){ num=map.get(itemChar)+1; } map.put(itemChar,num); } } return map; } }
-
实验结果
无
题目来自于蓝桥,若有帮助点个赞 " ^ "