MyException - 我的异常网
当前位置:我的异常网» J2SE » 求Java 数目字转成英文 需要原创 + 注释 急300分

求Java 数目字转成英文 需要原创 + 注释 急300分(8)

www.MyException.Cn  网友分享于:2013-12-19  浏览:67次

头晕, 帮顶JF
------解决方案--------------------
大家的方法都差不多嘛,新手看得头疼,学习一下~~~
------解决方案--------------------
实现很简单 主要看效率了
------解决方案--------------------
代码不少了, 友情帮顶一下
------解决方案--------------------

借光啊!呵呵。。。。
我在数据库里要执行统计查询select sum(cls+zr+yj-zc-xs-st) from yz_scjl,但是操作数数据类型 varchar 对于 sum 运算符无效。就是说sum括号里的必须是整型,不能是String类型。我把javaBean里的都改成了int,但是之前用户添加的都还是String类型,并且很无语的是用户添加的不仅仅限于数字,还包括“120头”,“256个”“无”这样的数据!没办法直接把表字段类型改成整型!让清空数据啊!可是数据是万万不能删除的!用户线上随时在用!该怎么办?其中还有些是空字段!
------解决方案--------------------
顶一下。
------解决方案--------------------
新手学习一下
------解决方案--------------------
顶一下又不会怀孕!~
------解决方案--------------------
顶一下
------解决方案--------------------
顶一下
------解决方案--------------------
好复杂啊。
------解决方案--------------------
学习下- -。
------解决方案--------------------
没明白楼主这样做的意思啊!
------解决方案--------------------
0的处理较啰嗦,有待完善。
Java code
public class numberToWords {
    private static final String[] ONES = {"Zero", "One", "Two", "Three", "Four", "Five","Six", "Seven", "Eight", "Nine" };
    private static final String[] TEENS = {"Ten", "Eleven", "Twelve", "Thirteen", null, "Fifteen",
        null, null, "Eighteen", null };
    private static final String[] TENS = {null, null, "Twenty", "Thirty", "Forty", "Fifty",
        "Sixty", "Seventy", "Eighty", "Ninety" };    
    //转换三位数,即处理<1000的数
    public static String numberToWords(int number) {
        if (number<10) {
            return ONES[number];
        } else if (number<20) {
            int n = number - 10;
            String words = TEENS[n];
            return words==null ? ONES[n]+"teen" : TEENS[n];
        } else if (number<100){
            int n = number % 10;
            return TENS[number/10] +
                (n==0 ? "" : (" " + numberToWords(n)));
        } else {
            int n = number % 100;
            return ONES[number/100] +" hundred"+
                (n==0 ? "" : (" and " + numberToWords(n)));
        } 
    }
    //将数三位三位地分柝,再调用三位数的方法,然后输出
    static void numToWords(long number){ 
        Long num=number;
        String str=""; 
        String[] denom = {"thousand", "million", "billion", "trillion"};
        if(number>999999999) System.out.println(number+": 超出范围,应<=999999999");
        else {
            for(int i=num.toString().length(),j=0;i>0;i=i-3,j++){
                if(num<1000)
                    str=numberToWords(num.intValue())+" "+str;
                else{
                    Long n = num % 1000;
                    // str=(n.equals(0L) ?" zero ":numberToWords(n.intValue()))+" "+denom[j]+" "+str;
                    str=(denom[j]+" "+numberToWords(n.intValue()))+" "+str;
                    num=num/1000;
                }
            }
            System.out.println(number+": "+str);
        }
    }
    //测试
    public static void main(String[] args) {
        long[] numbers={56945781L,1999999999L,899010039L,105L,21L,0L};
        for(long n:numbers)
            numToWords(n);        
    }
    /*输出
    56945781: Fifty Six million Nine hundred and Forty Five thousand Seven     hundred and Eighty One 
    1999999999: 超出范围,应<=999999999
    899010039: Eight hundred and Ninety Nine million Ten thousand Thirty Nine 
    105: One hundred and Five 
    21: Twenty One 
    0: Zero 
    */
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有