需求:用户输入一个1000位以内的正整数,编写程序判断其每一位的个数并输入
实现:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
//因为HashMap中的key不能重复,所以创建HashMap对象来存放数字及其位数
Map<Integer,Integer> map = new HashMap<>();
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个1000位以内的正整数:");
int num = sc.nextInt();
//初始化数字的位数
int count = 1;
for(int i = 0;i<1000;i++){
//与循环中的最后一行所关联,如果num剩0位退出循环
if(num==0){
break;
}
//通过取模拿到num的最后一位
int temp = num % 10;
//如果集合中不包含此数则添加,并将位数设为1
if(!map.containsKey(temp)){
map.put(temp,count);
//如果集合中包含此数则添加,并将位数取出加1继续存入
}else {
map.put(temp,map.get(temp)+1);
}
//num每次经过上述操作之后去掉最后一位
num /= 10;
}
//拿到集合中所有的key
Set<Integer> keys = map.keySet();
System.out.println("对于给定的数"+num+"其包含:");
//遍历输出
for(int key : keys){
System.out.println(map.get(key)+"个"+key);
}
}
}
结果: