输入一个K位数,求各位数字出现的次数。【Java语言实现】

题目描述:

输入一个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);

        }
    }
}

    运行结果截图:

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值