本帖最后由 朱玺 于 2013-3-6 12:07 编辑
- package number_converter;
-
- //汉字转换为阿拉伯数字
- //一百三十四亿一千零二十三万六千六百零九
- //最终应该转为这样:13410236609
-
- public class MyConverter2 {
- public static void main(String[] args) {
- long d=convert("一百三十四亿一千零二十三万六千六百零九");
- System.out.println(d);
- }
-
- public static long convert(String s){
- String [] s1=s.split("亿");
- long num=restore(s1[0]) *100000000L;
-
-
- String [] s2=s1[1].split("万");
- num=restore(s2[0]) *10000L +num;
-
- num=num+restore(s2[1]);
-
- return num;
- }
-
-
- public static int convertNumber(char c){
- int num=0;
- switch(c){
- case '零': num= 0; break;
- case '一': num= 1; break;
- case '二': num= 2; break;
- case '三': num= 3; break;
- case '四': num= 4; break;
- case '五': num= 5; break;
- case '六': num= 6; break;
- case '七': num= 7; break;
- case '八': num= 8; break;
- case '九': num= 9; break;
- }
- return num;
- }
-
- // 比如 一千三百五十1 还原为1351
- public static int restore(String s){
- char [] array=s.toCharArray();
- int num=0;
-
- for (int i=0; i<array.length-1; i++){
- if (array[i] != '零' && array[i+1]=='千' ){
- num=convertNumber( array[i] )*1000;
- }else
- if (array[i] != '零' && array[i+1]=='百' ){
- num=num + convertNumber( array[i] )*100;
- }else
- if (array[i] != '零' && array[i+1]=='十' ){
- num=num + convertNumber( array[i] )*10;
- }
- }
- return num+convertNumber(array[array.length-1]);
-
- }
- }
复制代码 |