键盘录入一个字符串,统计每个字符出现的次数
例如,录入aaaabbccddd!@#@#KaTeX parse error: Expected 'EOF', got '#' at position 2: @#̲%cc66ff
打印出来:a有4个,b有2个,c有4个,d有3个,!有1个,@有3个,$有2个,%有1个,6有2个,f有2个
思路:
1 使用Map key–>字符 value–>次数
2 遍历字符串取到字符
3 判断取到的字符在map的key中是否存在 存在,根据key取出次数 再+1 存回去。 不存在,把取到字符当成key存入map并存入次数(value) 1
package com.wednesday.generic31;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Map_Hash {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String st=sc.nextLine();
//定义Map集合,使用TreeMap使集合有序
Map<Character,Integer>map=new TreeMap<>();
char [] stchar=st.toCharArray();
//遍历char数组,如果里面包含则value值加一,否则添加赋初值
for(char ch:stchar){
/* 代码未优化,帮助理解
if(map.containsKey(ch)){
Integer value=map.get(ch);
map.put(ch, value+1);
}else{
map.put(ch, 1);
}
//map.containsKey(ch) ?map.put(ch, map.get(ch)+1):map.put(ch, 1);
*/
map.put(ch, map.containsKey(ch)?map.get(ch)+1:1);
}
/*//输出使用entry方法获取map里的内容
Set<Entry<Character,Integer>> mapentry=map.entrySet();
//写泛型时不会写
Iterator <Entry<Character,Integer>>entryite=mapentry.iterator();
StringBuilder sb=new StringBuilder();
while(entryite.hasNext()){
Entry<Character,Integer> entry=entryite.next();
char ch=entry.getKey();
int in=entry.getValue();
sb.append(ch).append("有").append(in).append("个,");
}
System.out.println(sb.toString().subSequence(0, sb.length()-1));*/
//上面代码的优化
StringBuilder sb=new StringBuilder();
//遍历map集合
for(Entry<Character,Integer > ent:map.entrySet()){
sb.append(ent.getKey()).append("有").append(ent.getValue()).append("个,");
}
//输出
System.out.println(sb.toString().subSequence(0, sb.length()-1));
}
}
最后
以上就是端庄故事最近收集整理的关于使用集合键盘录入一个字符串,统计每个字符出现的次数-----例题的全部内容,更多相关使用集合键盘录入一个字符串,统计每个字符出现内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复