有两种方法可以解决一种是利用HashMap解决
另一种是利用ASCII编码进行转换存储在数组中打印出来
ASCII解决的方案我就不写了,参照下面文章吧!如果这一块你掌握的不是太好,这几道练习题会对你有帮助的!
给定一个由数字组成的字符串,统计每个数字出现的次数
给定一个长度,随机产生一个该长度的字符串,由大写小写字母以及数字组成 Java中随机数的生成
题目
给定一个字符串,请输出这个字符串由哪些字符组成,出现过多少次?
接下来我是用HashMap解决的,直接贴代码了,详解见注释
import java.util.*;
/**
* @author Ziph
* @date 2020年3月6日
* @Email [email protected]
*/
public class Homework14 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = sc.nextLine();
count(str);
}
public static void count(String str) {
//将字符串转化为字符数字
char[] chars = str.toCharArray();
//创建一个HashMap集合
Map<Character, Integer> map = new HashMap<Character, Integer>();
//遍历字符数组
for (char c : chars) {
//当c字符首次存在于map中记录1
if (!map.containsKey(c)) {
map.put(c, 1);
} else {
//多次存在map中+1记录就OK
//实际上就是c字符每出现一次覆盖一次该key的value值(+1后的value值)
map.put(c, map.get(c) + 1);
}
//可以把if-else更换为下面的表达式更显简单
//map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1);
}
//打印结果
for (Character key : map.keySet()) {
System.out.println(key + " 字符在字符串中出现过 " + map.get(key) + " 次");
}
}
}