`
菜鸟级JAVA
  • 浏览: 96719 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java数字转汉语读法

阅读更多
看到好的东西就想收藏一份,说不定自己哪天就用的上了。

public class Test {

    private static final char[] nums  = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8',
            '9'                      };
    private static final char[] fonts = new char[] { '零', '一', '二', '三', '四', '五', '六', '七', '八',
            '九'                      };

    private enum NumFont {
        亿(100000000L), 万(10000L), 千(1000L), 百(100L), 十(10L);

        private final Long num;

        private NumFont(Long num) {
            this.num = num;
        }

        private Long getNum() {
            return num;
        }
    }

    /** 
     * 转换亿万千百十 
     */
    private static String transfer1(Long number) {
        StringBuilder sb = new StringBuilder();

        for (NumFont nf : NumFont.values()) {
            if (number / nf.getNum() > 0) {
                // 做除法之后整数部分递归继续读  
                sb.append(transfer(number / nf.getNum()));
                sb.append(nf.name());
                // 余数继续读  
                number = number % nf.getNum();
                // 如果下一位不够,则补0,整除则不补0,比如800,不能读八百零  
                if (number < nf.getNum() / 10 && number != 0) {
                    sb.append("0");
                }
            }
        }
        if (number > 0) {
            sb.append(number);
        }
        return sb.toString();
    }

    /** 
     * 转换0123456789 
     */
    private static char transfer2(char c) {
        char result = c;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == c) {
                result = fonts[i];
                break;
            }
        }
        return result;
    }

    /** 
     * 数字转换成汉语读法 
     */
    public static String transfer(Long number) {
        String result = transfer1(number);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < result.length(); i++) {
            char c = result.charAt(i);
            sb.append(transfer2(c));
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        System.out.println(transfer(108005000800L));
        System.out.println(transfer(13665543298L));
        System.out.println(transfer(53762L));
    }
}




感谢作者:http://supben.iteye.com/blog/1127770
分享到:
评论

相关推荐

    Java 数字转换成中文读法

    在编程领域,尤其是在Java开发中,有时我们需要将数字转换成中文读法,以便于用户更加直观地理解数据。这个需求通常出现在财务、报表或者人机交互界面等场景。标题所提及的问题是:“Java设计输入‘12345’显示‘一...

    c语言数字转汉语读法

    在C语言中,将数字转换为汉语读法是一项有趣且具有挑战性的任务,它涉及到字符串处理、数值计算以及汉字字符的使用。以下是如何实现这一功能的一些关键知识点: 1. **数值与字符串的转换**:首先,我们需要将输入的...

    java阿拉伯数字转换成中文传统读法

    在编程领域,尤其是在Java开发中,有时我们需要将阿拉伯数字(1, 2, 3等)转换为中文的传统读法(如“一”,“二”,“三”)。这个任务涉及到字符串处理、数字转换以及对中文字符的理解。在本文中,我们将深入探讨...

    数字金额转汉字的读法(java代码)

    本例中,我们将讨论如何用Java编程语言实现“数字金额转汉字的读法”。 首先,我们要理解数字金额转汉字的基本规则。在中文中,数字有特定的汉字对应,例如,“1”对应“一”,“2”对应“二”,“10”对应“十”,...

    把数学数字转换为人民币读法(很好的设计思想)

    这个“把数学数字转换为人民币读法”的问题就是一个很好的设计思想的例子,它涉及到自然语言处理、字符串操作以及数字与文本之间的转换。我们将探讨如何使用C#来实现这个功能。 首先,人民币的读法有一定的规则,如...

    《疯狂java讲义》课后习题之数字转人民币读法(附源码)

    题目:输入一串数字,转成人民币读法输出 例: 输入:12345678.908 输出:壹仟贰佰叁拾肆万伍仟陆佰柒拾捌元玖角零捌厘 实现该功能要解决如下几个问题: 1、输入有效性检查 2、数字转中文 3、零的特殊处理 关于零...

    Java将小写数字变汉字

    将小写数字变大写 如 输入1234567 可以输出一二三四五六七

    Java实现数字转成英文的方法

    接着,移除字符串开头的零,因为它们在英文表达中并不影响数字的读法。如果处理后字符串长度为零,说明原始字符串只包含零,此时直接返回"zero"。 对于长度大于9的字符串(即大于999的数字),我们按照每三位进行...

    中文数字读法转为英文

    把中文数字的读法通过程序转为英文读法的方法。

    日语数字读法总结(各种时间下数字的读法)

    在学习日语的过程中,了解数字的读法是基础且重要的环节。日语数字的读法在不同的上下文中可能会有所变化,特别是在表示时间、日期和星期时。以下是对日语数字读法的详细总结: 1. **100以下的数字**: - 0:れい...

    疯狂Java讲义 浮点数转换成人民币读法

    总的来说,将浮点数转换为人民币读法是一个涉及数值处理、字符串操作和格式化技术的综合性问题,通过这个实践可以加深对Java编程的理解,并提升编程技巧。在实际工作中,这样的转换可能还会涉及到多语言环境下的本地...

    黑盒测试(人民币数字转大写) 实验报告

    4. **零的特殊处理**:小写数字中的“0”需根据汉语语言规则和防涂改要求进行特殊转换。 ### 测试方法:黑盒测试技术 #### 边界值分析测试 - **基本原理**:边界值分析关注的是输入变量的极端值,假设错误更可能...

    中科大-软件测试实验一-人民币数字大写转换黑盒测试实验报告.docx

    "中科大-软件测试实验一-人民币数字大写转换黑盒测试实验报告" 本实验报告旨在对人民币数字大写转换软件进行黑盒测试,测试目的在于评估该软件的质量和可靠性。下面是实验报告的详细内容: 一、引言 软件测试是...

    日语数字的读法[归类].pdf

    但是,可以从这些内容推测出它们与日语数字的读法有关。在日语中,数字的读法可以按照不同的类别进行归类。以下将尝试根据常见的日语数字读法进行知识点的总结。 首先,日语数字分为基础数字和特殊读法的数字。基础...

    汉语拼音读法.pdf

    汉语拼音读法.pdf

    将数字转化为人民币读法的小程序

    将浮点数转化为人民币读法的字符串。如1006.333转为壹仟零陆元三角三分。

    英语数字读法PPT课件.pptx

    英语数字读法PPT课件.pptx

    汉语拼音字母表的读法亟待改革.pdf

    "汉语拼音字母表的读法亟待改革" 汉语拼音字母表的读法亟待改革,这是一个亟待解决的问题。在小学二年级时,我们就开始学习《汉语拼音字母表》,但是这种读法却不容易让人读懂。《汉语拼音方案》规定了《汉语拼音...

    数字运算中数符的各种英文读法

    根据给定文件的信息,本文将详细介绍在数字运算中数符的各种英文读法,这对于从事数学英语教学的朋友来说具有很高的参考价值。以下是对该文件中提到的关键知识点进行详细解读。 ### 数学英语读法概述 首先,文件...

    阿拉伯数字转换成中文大写的算法(C#窗体程序)

    这样做是为了保持中文大写数字的正确读法,避免出现诸如“三百万零一”的不自然表述。 在窗体程序中,`button1_Click`事件处理函数是触发转换操作的地方,它获取用户在`textBox1`中输入的数字,调用`NumToChn`方法...

Global site tag (gtag.js) - Google Analytics