题目描述:
输入一个K为数字,K<=1000,递增输出各位数字出现的次数。
例如:输入:1000231
输出:0:3<br/>1:2<br/>2:1<br/><3:1>
设计思路:
(1)将输入的数字转换为字符串;
(2)利用HashMap将每个字符(key)以及出现的次数(value)存储起来;
(3)遍历HashMap按题目要求输出
程序代码:
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class CountNumbers {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String str="";
while(scanner.hasNextBigInteger()){
BigInteger bi=scanner.nextBigInteger();
str=String.valueOf(bi);
countNum(str);
}
}
private static void countNum(String str){
//将各位数字作为Key,其出现的次数作为value存储在HashMap中
HashMap<Character,Integer> map=new HashMap<>();
if(str==null || str.length()>1000) return ;
//统计每个数字出现的次数
for(int i=0;i<str.length();i++){
//用临时变量tmp记录数字的次数
Integer tmp=map.get(str.charAt(i));
if(map.containsKey(str.charAt(i))){
//如果map里已经有这个数字,则将该数字添加到map中,并将其对应的value+1;
map.put(str.charAt(i),++tmp);
}else {
//否则,就说明该数字是第一次出现,value=1
map.put(str.charAt(i),1);
}
}
//遍历map集合,输出对应的数字和value
for(Map.Entry<Character,Integer> entry: map.entrySet()){
Character key=entry.getKey();
Integer value=entry.getValue();
System.out.println(key+":"+value);
}
}
}
运行结果截图: