练习:计算一个字符串中每个字符出现的次数,使用Map
今天老师布置了一个小作业,老师说有点点难度,起初抱着钻研的心态试试,花了十几分钟写出来并优化了一下
package Work2;
import java.util.*;
public class homework2 {
// 练习:计算一个字符串中每个字符出现的次数,使用Map
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string;
System.out.println("请输入字符串");
string=scanner.next();//获取输入的字符串
test1(string);//调用方法
}
private static void test1(String string) {
Map<String,Integer> map=new HashMap<>();//new hashMap
for (int i = 0; i < string.length(); i++) {//遍历string字符串
String s=string.substring(i,i+1);//获取每个字符
if(map.get(s)==null){//如果获取的字符是第一次进map就创建键值对
map.put(s,1);
}else{
map.put(s,map.get(s)+1);//
}
}
Set<String> keys=map.keySet();
for (String key:keys) {
System.out.println(key+":"+map.get(key));
}
}
}
总之还是比较容易,绕了几个小弯,遇到几个问题总结一下
起初想用数组来控制键值对的数据增减,但是无法定i值,放弃数组
然后想用count变量控制键值对的数据增减,但也不好控制count值的增减
再然后想起了Map的方法,但是Map写入第一个键值对数据时会返回空针,起初想的是用一个变量和if判断进行赋值,是空针就直接赋1,不是空针就+1。最后直接把变量赋值改到put方法里去,用if也避免了空针。
可能老师认为的难度是空针的处理以及数据的遍历,本人确实比较笨,一开始想的太简单,花了很多时间。