首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2011-12-18 
求Java 数字转成英文需要原创 + 注释急!!!300分要求如下,先到先得。需要原创! 1楼的供参考decode 1 outpu

求Java 数字转成英文 需要原创 + 注释 急!!!300分
要求如下,先到先得。 

需要原创! 1楼的供参考


"decode 1" outputs "one"

"decode 21" outputs "twenty one"

"decode 105" outputs "one hundred and five"

"decode 56945781" outputs "fifty six million nine hundred and forty five thousand seven hundred and eighty one"

The application should be able to handle any number from the range 0 - 999999999.

[解决办法]
我英语四级还没过,下面的一堆单词我只认识code java static string thousand million billion七个单词

Java code
 static String[] denom = { "", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion",            "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "sexdecillion", "septendecillion", "octodecillion",            "novemdecillion", "vigintillion" };
[解决办法]
Java code
public class Main {    static String[] to_19 = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",            "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };    static String[] tens = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };    static String[] denom = { "", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion",            "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "sexdecillion", "septendecillion", "octodecillion",            "novemdecillion", "vigintillion" };    public static void main(String[] argv) throws Exception {        int tstValue = 111199697;        Main_app itoe = new Main_app();        System.out.println(itoe.english_number(tstValue));    }    private String convert_nn(int val) throws Exception {        if (val < 20)            return to_19[val];        int flag = val / 10 - 2;        if (val % 10 != 0)            return tens[flag] + "-" + to_19[val % 10];        else            return tens[flag];    }    private String convert_nnn(int val) throws Exception {        String word = "";        int rem = val / 100;        int mod = val % 100;        if (rem > 0) {            word = to_19[rem] + " hundred";            if (mod > 0) {                word = word + " ";            }        }        if (mod > 0) {            word = word + convert_nn(mod);        }        return word;    }    public String english_number(int val) throws Exception {        if (val < 100) {            return convert_nn(val);        }        if (val < 1000) {            return convert_nnn(val);        }        for (int v = 0; v < denom.length; v++) {            int didx = v - 1;            int dval = new Double(Math.pow(1000, v)).intValue();            if (dval > val) {                int mod = new Double(Math.pow(1000, didx)).intValue();                int l = val / mod;                int r = val - (l * mod);                String ret = convert_nnn(l) + " " + denom[didx];                if (r > 0) {                    ret = ret + ", " + english_number(r);                }                return ret;            }        }        throw new Exception("Should never get here, bottomed out in english_number");    }} 


[解决办法]

Java code
import java.text.DecimalFormat;public class EnglishNumberToWords {  private static final String[] tensNames = {    "",    " ten",    " twenty",    " thirty",    " forty",    " fifty",    " sixty",    " seventy",    " eighty",    " ninety"  };  private static final String[] numNames = {    "",    " one",    " two",    " three",    " four",    " five",    " six",    " seven",    " eight",    " nine",    " ten",    " eleven",    " twelve",    " thirteen",    " fourteen",    " fifteen",    " sixteen",    " seventeen",    " eighteen",    " nineteen"  };  private static String convertLessThanOneThousand(int number) {    String soFar;    if (number % 100 < 20){      soFar = numNames[number % 100];      number /= 100;    }    else {      soFar = numNames[number % 10];      number /= 10;      soFar = tensNames[number % 10] + soFar;      number /= 10;    }    if (number == 0) return soFar;    return numNames[number] + " hundred" + soFar;  }  public static String convert(long number) {    // 0 to 999 999 999 999    if (number == 0) { return "zero"; }    String snumber = Long.toString(number);    // pad with "0"    String mask = "000000000000";    DecimalFormat df = new DecimalFormat(mask);    snumber = df.format(number);    // XXXnnnnnnnnn     int billions = Integer.parseInt(snumber.substring(0,3));    // nnnXXXnnnnnn    int millions  = Integer.parseInt(snumber.substring(3,6));     // nnnnnnXXXnnn    int hundredThousands = Integer.parseInt(snumber.substring(6,9));     // nnnnnnnnnXXX    int thousands = Integer.parseInt(snumber.substring(9,12));        String tradBillions;    switch (billions) {    case 0:      tradBillions = "";      break;    case 1 :      tradBillions = convertLessThanOneThousand(billions)       + " billion ";      break;    default :      tradBillions = convertLessThanOneThousand(billions)       + " billion ";    }    String result =  tradBillions;    String tradMillions;    switch (millions) {    case 0:      tradMillions = "";      break;    case 1 :      tradMillions = convertLessThanOneThousand(millions)       + " million ";      break;    default :      tradMillions = convertLessThanOneThousand(millions)       + " million ";    }    result =  result + tradMillions;    String tradHundredThousands;    switch (hundredThousands) {    case 0:      tradHundredThousands = "";      break;    case 1 :      tradHundredThousands = "one thousand ";      break;    default :      tradHundredThousands = convertLessThanOneThousand(hundredThousands)       + " thousand ";    }    result =  result + tradHundredThousands;    String tradThousand;    tradThousand = convertLessThanOneThousand(thousands);    result =  result + tradThousand;    // remove extra spaces!    return result.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " ");  }  /**   * testing   * @param args   */  public static void main(String[] args) {    System.out.println("*** " + EnglishNumberToWords.convert(0));    System.out.println("*** " + EnglishNumberToWords.convert(1));    System.out.println("*** " + EnglishNumberToWords.convert(16));    System.out.println("*** " + EnglishNumberToWords.convert(100));    System.out.println("*** " + EnglishNumberToWords.convert(118));    System.out.println("*** " + EnglishNumberToWords.convert(200));    System.out.println("*** " + EnglishNumberToWords.convert(219));    System.out.println("*** " + EnglishNumberToWords.convert(800));    System.out.println("*** " + EnglishNumberToWords.convert(801));    System.out.println("*** " + EnglishNumberToWords.convert(1316));    System.out.println("*** " + EnglishNumberToWords.convert(1000000));    System.out.println("*** " + EnglishNumberToWords.convert(2000000));    System.out.println("*** " + EnglishNumberToWords.convert(3000200));    System.out.println("*** " + EnglishNumberToWords.convert(700000));    System.out.println("*** " + EnglishNumberToWords.convert(9000000));    System.out.println("*** " + EnglishNumberToWords.convert(9001000));    System.out.println("*** " + EnglishNumberToWords.convert(123456789));    System.out.println("*** " + EnglishNumberToWords.convert(2147483647));    System.out.println("*** " + EnglishNumberToWords.convert(3000000010L));    /*     *** zero     *** one     *** sixteen     *** one hundred     *** one hundred eighteen     *** two hundred     *** two hundred nineteen     *** eight hundred     *** eight hundred one     *** one thousand three hundred sixteen     *** one million      *** two millions      *** three millions two hundred     *** seven hundred thousand      *** nine millions      *** nine millions one thousand      *** one hundred twenty three millions four hundred      **      fifty six thousand seven hundred eighty nine     *** two billion one hundred forty seven millions      **      four hundred eighty three thousand six hundred forty seven     *** three billion ten     **/  }} 


[解决办法]
这个不复杂吧,跟数字转大写的差不多,只是英文的分界点是千、百万、十亿
[解决办法]
不写了,还蹭个分
[解决办法]
呵呵, 顶一下。学习了~~
[解决办法]
零的处理比较复杂
[解决办法]
接分的
[解决办法]
接分的
[解决办法]

Java code
public class Main {    static String[] to_19 = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",            "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };    static String[] tens = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };    static String[] denom = { "", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion",            "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "sexdecillion", "septendecillion", "octodecillion",            "novemdecillion", "vigintillion" };    public static void main(String[] argv) throws Exception {        int tstValue = 111199697;        Main_app itoe = new Main_app();        System.out.println(itoe.english_number(tstValue));    }    private String convert_nn(int val) throws Exception {        if (val < 20)            return to_19[val];        int flag = val / 10 - 2;        if (val % 10 != 0)            return tens[flag] + "-" + to_19[val % 10];        else            return tens[flag];    }    private String convert_nnn(int val) throws Exception {        String word = "";        int rem = val / 100;        int mod = val % 100;        if (rem > 0) {            word = to_19[rem] + " hundred";            if (mod > 0) {                word = word + " ";            }        }        if (mod > 0) {            word = word + convert_nn(mod);        }        return word;    }    public String english_number(int val) throws Exception {        if (val < 100) {            return convert_nn(val);        }        if (val < 1000) {            return convert_nnn(val);        }        for (int v = 0; v < denom.length; v++) {            int didx = v - 1;            int dval = new Double(Math.pow(1000, v)).intValue();            if (dval > val) {                int mod = new Double(Math.pow(1000, didx)).intValue();                int l = val / mod;                int r = val - (l * mod);                String ret = convert_nnn(l) + " " + denom[didx];                if (r > 0) {                    ret = ret + ", " + english_number(r);                }                return ret;            }        }        throw new Exception("Should never get here, bottomed out in english_number");    }}
[解决办法]
顶两下吧~
------解决方案--------------------


学习下
[解决办法]
三花聚顶~
[解决办法]
顶一下
[解决办法]
顶两下行不行?
[解决办法]
有没有小数?
[解决办法]
路过。。。
[解决办法]
顶顶顶
[解决办法]
有点意思
[解决办法]
顶一下
[解决办法]
不写了,蹭个分!
[解决办法]
顶一下
[解决办法]
以前有人问过一个类似的问题
http://topic.csdn.net/u/20110726/17/340f95e3-d2ea-41c9-94a4-d59c48c811a5.html

把当时在原贴的答复拷贝过来。在该基础上稍微改一改就可以了
现在新换的本本,没有java环境,所以修改版本暂时保留。

Java code
class Matrix {       public static final String[] baseTable = {        "zero", "one", "tow", "three", "four", "five",        "six", "seven", "eight", "nine", "ten",        "eleven", "twelve", "thirteen", "fourteen", "fifteen",        "sixteen", "seventeen", "eighteen", "nineteen", "twenty",        "", "", "", "", "", "", "", "", "", "thirty",        "", "", "", "", "", "", "", "", "", "fourty",        "", "", "", "", "", "", "", "", "", "fifty",        "", "", "", "", "", "", "", "", "", "sixty",        "", "", "", "", "", "", "", "", "", "seventy",        "", "", "", "", "", "", "", "", "", "eighty",        "", "", "", "", "", "", "", "", "", "ninety"    };            public static final String[] unitTable = {"hundred", "thousand"};        public static void main(String[] args) {        int sum = 0;        for (int i=1; i<=1000; i++) {            String s = analyze(i);            System.out.println(s);            sum += s.length();        }        System.out.println(sum);    }    public static String analyze(int num) {        if (num < 0) {return "";}                StringBuilder buf = new StringBuilder();        if (num < 20) {            return baseTable[num];        } else if (num < 100) {            if (num%10 == 0) {                buf.append(baseTable[num]);            } else {                buf.append(baseTable[num-num%10]);                buf.append(baseTable[num%10]);            }        } else if (num < 1000) {            buf.append(baseTable[num/100]).append(unitTable[0]);            if (num%100 != 0) {                buf.append("and");                buf.append(analyze(num%100));            }        } else if (num < 10000) {            buf.append(baseTable[num/1000]).append(unitTable[1]);            if (num%1000 != 0) {                buf.append("and");                buf.append(analyze(num%1000));            }        }        return buf.toString();    }    } 


[解决办法]
装上java了,修改版贴出
英文数词,按3位3位区分
Hundred: 100
Thousand:1,000
Million: 1,000,000
Billion: 1,000,000,000
Trillion: 1,000,000,000,000
Quintillion: 1,000,000,000,000,000,000
Sextillion: 1,000,000,000,000,000,000,000
Nonillion: 1,000,000,000,000,000,000,000,000,000,000
Centillion: 1 followed by 303 zeros
所以把数字字符串按3位分割,分别解析

Java code
class NumUtil {       public static final String[] enNum = { //基本数词表        "zero", "one", "tow", "three", "four", "five",        "six", "seven", "eight", "nine", "ten",        "eleven", "twelve", "thirteen", "fourteen", "fifteen",        "sixteen", "seventeen", "eighteen", "nineteen", "twenty",        "", "", "", "", "", "", "", "", "", "thirty",        "", "", "", "", "", "", "", "", "", "fourty",        "", "", "", "", "", "", "", "", "", "fifty",        "", "", "", "", "", "", "", "", "", "sixty",        "", "", "", "", "", "", "", "", "", "seventy",        "", "", "", "", "", "", "", "", "", "eighty",        "", "", "", "", "", "", "", "", "", "ninety"    };        public static final String[] enUnit = {"hundred", "thousand", "million", "billion", "trillion", "quintillion"}; //单位表        public static void main(String[] args) {        System.out.println(analyze(1)); //测试数据        System.out.println(analyze(21));        System.out.println(analyze(105));        System.out.println(analyze(3250));        System.out.println(analyze(47826));        System.out.println(analyze(56945781));    }    public static String analyze(long num) { //long型参数,        return analyze(String.valueOf(num)); //因为long型有极限,所以以字符串参数方法为主    }    public static String analyze(String num) { //数字字符串参数         //判断字符串是否为数字        if (! num.matches("\\d+")) {return String.format("%s is not number", num);}        num = num.replaceAll("^[0]*([1-9]*)", "$1"); //把字符串前面的0去掉        if (num.length() == 0) { //如果长度为0,则原串都是0            return enNum[0];        } else if (num.length() > 9) { //如果大于9,即大于999999999,题目限制条件            return "too big";        }        //按3位分割分组        int count = (num.length()%3 == 0) ? num.length()/3 : num.length()/3 + 1;        if (count > enUnit.length) {return "too big";} //判断组单位是否超过,                                                               //可以根据需求适当追加enUnit        String[] group = new String[count];        for (int i=num.length(), j=group.length-1; i>0; i-=3) {            group[j--] = num.substring(Math.max(i-3, 0), i);        }                StringBuilder buf = new StringBuilder(); //结果保存        for(int i=0; i<count; i++) { //遍历分割的组            int v = Integer.valueOf(group[i]);            if (v >= 100) { //因为按3位分割,所以这里不会有超过999的数                buf.append(enNum[v/100]).append(" ").append(enUnit[0]).append(" ");                v = v%100; //获取百位,并得到百位以后的数                if (v != 0) {buf.append("and ");} //如果百位后的数不为0,则追加and            }            if (v < 20 || v%10 == 0) { //如果小于20或10的整数倍,直接取基本数词表的单词                buf.append(enNum[v]).append(" ");            } else { //否则取10位数词,再取个位数词                buf.append(enNum[v-v%10]).append(" ");                buf.append(enNum[v%10]).append(" ");            }            if (i != count-1) { //百位以上的组追加相应的单位                buf.append(enUnit[count-1-i]).append(" ");            }        }        return buf.toString().trim(); //返回值    }} 


[解决办法]
顶一下给2分
[解决办法]
if (v < 20 || v%10 == 0)以后的处理放到if (v != 0)里去做

Java code
class NumUtil {       public static final String[] enNum = { //基本数词表        "zero", "one", "tow", "three", "four", "five",        "six", "seven", "eight", "nine", "ten",        "eleven", "twelve", "thirteen", "fourteen", "fifteen",        "sixteen", "seventeen", "eighteen", "nineteen", "twenty",        "", "", "", "", "", "", "", "", "", "thirty",        "", "", "", "", "", "", "", "", "", "fourty",        "", "", "", "", "", "", "", "", "", "fifty",        "", "", "", "", "", "", "", "", "", "sixty",        "", "", "", "", "", "", "", "", "", "seventy",        "", "", "", "", "", "", "", "", "", "eighty",        "", "", "", "", "", "", "", "", "", "ninety"    };        public static final String[] enUnit = {"hundred", "thousand", "million", "billion", "trillion", "quintillion"}; //单位表        public static void main(String[] args) {        System.out.println(analyze(1)); //测试数据        System.out.println(analyze(21));        System.out.println(analyze(105));        System.out.println(analyze(3250));        System.out.println(analyze(47826));        System.out.println(analyze(56945781));    }    public static String analyze(long num) { //long型参数,        return analyze(String.valueOf(num)); //因为long型有极限,所以以字符串参数方法为主    }    public static String analyze(String num) { //数字字符串参数         //判断字符串是否为数字        if (! num.matches("\\d+")) {return String.format("%s is not number", num);}        num = num.replaceAll("^[0]*([1-9]*)", "$1"); //把字符串前面的0去掉        if (num.length() == 0) { //如果长度为0,则原串都是0            return enNum[0];        } else if (num.length() > 9) { //如果大于9,即大于999999999,题目限制条件            return "too big";        }        //按3位分割分组        int count = (num.length()%3 == 0) ? num.length()/3 : num.length()/3 + 1;        if (count > enUnit.length) {return "too big";} //判断组单位是否超过,                                                               //可以根据需求适当追加enUnit        String[] group = new String[count];        for (int i=num.length(), j=group.length-1; i>0; i-=3) {            group[j--] = num.substring(Math.max(i-3, 0), i);        }                StringBuilder buf = new StringBuilder(); //结果保存        for(int i=0; i<count; i++) { //遍历分割的组            int v = Integer.valueOf(group[i]);            if (v >= 100) { //因为按3位分割,所以这里不会有超过999的数                  buf.append(enNum[v/100]).append(" ").append(enUnit[0]).append(" ");                v = v%100; //获取百位,并得到百位以后的数                  if (v != 0) {buf.append("and ");} //如果百位后的数不为0,则追加and            }            if (v != 0) { //前提是v不为0才作解析                if (v < 20 || v%10 == 0) { //如果小于20或10的整数倍,直接取基本数词表的单词                      buf.append(enNum[v]).append(" ");                } else { //否则取10位数词,再取个位数词                      buf.append(enNum[v-v%10]).append(" ");                   buf.append(enNum[v%10]).append(" ");                }                if (i != count-1) { //百位以上的组追加相应的单位                      buf.append(enUnit[count-1-i]).append(" ");                }            }                   }        return buf.toString().trim(); //返回值    }} 


[解决办法]

Java code
public class Decode {    static String[] to_19 = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",            "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };    static String[] tens = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };    static String[] denom = { "", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion",            "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "sexdecillion", "septendecillion", "octodecillion",            "novemdecillion", "vigintillion" };    public static void main(String[] argv) throws Exception {        int tstValue = 111199697;        Main_app itoe = new Main_app();        System.out.println(itoe.english_number(tstValue));    }    private String convert_nn(int val) throws Exception {        if (val < 20)            return to_19[val];        int flag = val / 10 - 2;        if (val % 10 != 0)            return tens[flag] + "-" + to_19[val % 10];        else            return tens[flag];    }    private String convert_nnn(int val) throws Exception {        String word = "";        int rem = val / 100;        int mod = val % 100;        if (rem > 0) {            word = to_19[rem] + " hundred";            if (mod > 0) {                word = word + " ";            }        }        if (mod > 0) {            word = word + convert_nn(mod);        }        return word;    }    public String english_number(int val) throws Exception {        if (val < 100) {            return convert_nn(val);        }        if (val < 1000) {            return convert_nnn(val);        }        for (int v = 0; v < denom.length; v++) {            int didx = v - 1;            int dval = new Double(Math.pow(1000, v)).intValue();            if (dval > val) {                int mod = new Double(Math.pow(1000, didx)).intValue();                int l = val / mod;                int r = val - (l * mod);                String ret = convert_nnn(l) + " " + denom[didx];                if (r > 0) {                    ret = ret + ", " + english_number(r);                }                return ret;            }        }        throw new Exception("Should never get here, bottomed out in english_number");    }}
[解决办法]
这么多代码。。。我不贴了,头都晕了
[解决办法]
为了两分..........
[解决办法]
顶一下吧
[解决办法]
都写出来,顶一下吧!
[解决办法]
很容易啊,跟做日历一样的
比日历还简单呢
[解决办法]
看看谁得算法简练
[解决办法]
有难度,
------解决方案--------------------


头晕, 帮顶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     */} 


[解决办法]
好啊 进来学下英语
[解决办法]
帮顶了~
[解决办法]
顶一下。我是刚学习java,挺感兴趣的。但是不知道怎么入手。。
[解决办法]
学习了,帮顶一下!
[解决办法]
惭愧了,billion后面的单词都不认识
[解决办法]
接分的
[解决办法]
LZ估计给分 给的蛋疼~
[解决办法]
楼主分好多哇!
[解决办法]
以前写过中文的,英文的也差不多吧
中文是4位进位,英文是3位进
[解决办法]
不知道这个可以不,以前练习的(中文的)
顺便小弟不会贴专业的代码格式,只能用纯文本了。



public class NumberTest
{
//该方法检查输入字符串是否为数字并输出相应结果。
public static String checkNumber(String str)

String str1 = new String();

char[] c = str.toCharArray();

int sum = 0;
for(char s : c)
{
if(s > 64 && s < 91 ||s > 96 && s < 123)
sum = 1;
}
if(sum == 1)
return "用户输入的字符不都为数字,无法转换!";
else
{
String[] num = {"零", "一", "二", "三", "四", "五", "六", "七","八", "九"};
String[] label = {"十", "百", "千", "万", "十", "百","千"};

if(str.length() < 9)
{
int nm = str.length() - 2;

for (int i = 0; i < str.length() - 1; i++)
{
if(c[i] != '0')
str1 += num[c[i] - 48] + label[nm--];

else if(c[i] == '0' && c[i+1] != '0')
{
if(label[nm--] == "万")
str1 += "万" + num[c[i] - 48];
else
str1 += num[c[i] - 48];
}

else if(c[i] == '0' && c[i+1] == '0')
{
if(label[nm--] == "万")
str1 += "万";
}

else 
{
str1 += "";
nm--;
}
}

}
else
return "字符个数不能超过8!";
if(c[str.length()-1] != '0')
{
return str1 + num[c[str.length()-1] -48];
}
else
return str1;
}

}

public static void main(String[] args)
{

for(String s : args)
{
if(s.length() > 8 )
{
System.out.println(s);
System.out.println("输入的字符最多为8个!");
}
else if( s.length() < 0)
{
System.out.println(s);
System.out.println("输入不能为空!");
}
else
{
System.out.println(s);
System.out.println(checkNumber(s));
}
}
}
}
[解决办法]

[解决办法]
Integer.praseString()
[解决办法]
多谢!好好学习
[解决办法]
顶,一,下
------解决方案--------------------


学习学习
[解决办法]
都是人才啊,打酱油路过……

热点排行