JAVA实现 输入一串数字,显示汉字读法,如:1234,读作:一千二百三十四

import java.util.Scanner;

/**
 * <p>输入一串数字,显示汉字读法 出来,如1234,读作:一千二百三十四</p>
 * 
 * @author Shockang
 *
 */
public class NumberToChinese 
{

    private static Scanner scanner;// 方便获取控制台输入

    private static String input;// 输入的数字字符串
        
    // 单个数字中文表示
    private static String numbers[] = 
    { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
      

    private static String units[] = 
    { "", "十", "百", "千", "万", "十", "百", "千", "亿" };// 单位
        
    // 将数字字符串串中的每个数字字符按照从左到右的顺序放入数组
    private static String result[];


    /**
     * <p> 输入一串数字,显示汉字读法的方法</p>
     * 
     * @param input
     * @return String
     */
    public static String getOutput(String input) 
    {
        if(input.length()>9)
        {
            return "最多输入9位数字";
        }
        StringBuffer sb = new StringBuffer();
        int back = 0;
        result = new String[input.length()];// result数组初始化
        for (int i = 0; i < result.length; i++) 
        {
            result[i] = String.valueOf(input.charAt(i));
        }
        
        for (int i = 0; i < result.length; i++) 
        {
            if (!result[i].equals("0")) 
            {
                back = result.length - i - 1;
                
                sb.append(numbers[Integer.parseInt(result[i])]);

                sb.append(units[back]);
            } 
            else 
            {
                if(i == result.length - 5 && result[i].equals("0"))
                {
                    if(result.length==9 && 
                       result[1].equals("0") && 
                       result[2].equals("0") && 
                       result[3].equals("0"))
                    {
                        sb.append(numbers[0]);
                    }
                    else
                    {
                        sb.append(units[4]);
                    }
                }
                else
                {
                    if ( i<result.length-1 && !result[i + 1].equals("0")) 
                    {
                        sb.append(numbers[0]);
                    }
                }
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) 
    {
        System.out.println("请输入一串数字:如1234,最多9位");
        scanner = new Scanner(System.in);
        input = scanner.nextLine();
        System.out.println(getOutput(input));
    }

 控制台输出:

请输入一串数字:如1234,最多9位
410100540

四亿一千零一十万零五百四十

请输入一串数字:如1234,最多9位
565232446526
最多输入9位数字

请输入一串数字:如1234,最多9位
800006502
八亿零六千五百零二

请输入一串数字:如1234,最多9位
8000250
八百万零二百五十

请输入一串数字:如1234,最多9位
100500230
一亿零五十万零二百三十

这是我自己写的代码,实现了显示数字串汉字读法的功能,不足之处敬请指教!

转载于:https://www.cnblogs.com/Shockang/p/6557553.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值