zoukankan      html  css  js  c++  java
  • 华为笔试 数字转中文拼音

    题目:输入一个整数数字,输出该数字的中文拼音

    比如:54        wushisi

            100      yibai

            6006    liuqianlingliu

            60006    liuwanlingliu

    解题思路:

    首先要把数字的读音和数字对应起来,十位、百位、千位。。。等等的读音对应起来

    接下来要考虑到几种情况:

    1、各位为零

    2、中间有连续几个零

    3、当整数大于万以后怎么读

    参考代码:

    import java.util.HashMap;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
    
            Scanner in = new Scanner(System.in);
            while (in.hasNext()) {
                String line = in.nextLine();
                HashMap<Integer, String> frist = new HashMap<Integer, String>();
                frist.put(1, "shi");
                frist.put(2, "bai");
                frist.put(3, "qian");
                frist.put(4, "wan");
                frist.put(8, "yi");
                HashMap<Integer, String> read = new HashMap<Integer, String>();
                read.put(1, "yi");
                read.put(2, "er");
                read.put(3, "san");
                read.put(4, "si");
                read.put(5, "wu");
                read.put(6, "liu");
                read.put(7, "qi");
                read.put(8, "ba");
                read.put(9, "jiu");
                read.put(0, "ling");
    
                int num = Integer.parseInt(line);
                StringBuilder sb = new StringBuilder();
                int i = 0;
                int j = 0;
    
                while (num != 0) {
                    j = num % 10;
                    if (i != 0 && j != 0) {
                        sb.insert(0, frist.get(i));
                        sb.insert(0, read.get(j));
                    } else if (i != 0 && j == 0) {
                        if (sb.toString().length() != 0 && sb.indexOf("ling")!=0){//中间连续几个零
                            sb.insert(0, read.get(0));
                        }
                    } else if (i == 0 && j != 0) {
                        sb.insert(0, read.get(j));
                    }
    
                    i++;
                    if (i > 4) {
                        i = i % 4;//当位数大于万
                    }
                    num = num / 10;
                }
                String str = sb.toString();
                str = str.replaceAll("null", "");
    
                System.out.println(str);
            }
        }
    }
  • 相关阅读:
    红帽7 创建网络会话
    红帽7 Iptables与Firewalld防火墙
    红帽7 配置网卡
    红帽7 LVM逻辑卷管理器
    红帽7 RAID磁盘冗余阵列
    红帽7 磁盘划分
    wpf学习一(转)
    选中当前点击的位置
    c#客显
    两个程序间的通信有三种
  • 原文地址:https://www.cnblogs.com/googlemeoften/p/5848414.html
Copyright © 2011-2022 走看看