public long getResult(String s) { s=formatInputSting(s); System.out.println(s); for (int i=s.length()-1;i>=0;i--){ tmp+=s.charAt(i); temp=caseop(tmp); if (temp == -1) { System.out.println("错误的参数输入"); return -1; } result += temp; tmp = ""; } return result; }
public long caseop(String s) { long co = 0; switch (getCharNO(s)) { case 88: return -1; case 0: return 0; case 1: co = 1 * flag * wan * yi; flag = 1; return co; case 2: co = 2 * flag * wan * yi; flag = 1; return co; case 3: co = 3 * flag * wan * yi; flag = 1; return co; case 4: co = 4 * flag * wan * yi; flag = 1; return co; case 5: co = 5 * flag * wan * yi; flag = 1; return co; case 6: co = 6 * flag * wan * yi; flag = 1; return co; case 7: co = 7 * flag * wan * yi; flag = 1; return co; case 8: co = 8 * flag * wan * yi; flag = 1; return co; case 9: co = 9 * flag * wan * yi; flag = 1; return co; case 10: flag = 10; return 0; case 11: flag = 100; return 0; case 12: flag = 1000; return 0; case 13: wan = 10000; return 0; case 14: yi = 10000; wan = 10000; return 0; default: return 0; } }
public static void main(String[] args) { Test test = new Test(); test.init();
int wan=1;//万位标示
int yi=1;//亿位标示
int flag = 1;//个,十,百,千的标示
long temp = 0;
String tmp = "";
long result = 0;
String[] c = new String[15];
public void init() {
c[0] = "零"; c[1] = "一"; c[2] = "二";
c[3] = "三"; c[4] = "四"; c[5] = "五";
c[6] = "六"; c[7] = "七"; c[8] = "八";
c[9] = "九"; c[10] = "十"; c[11] = "百";
c[12] = "千"; c[13] = "万"; c[14] = "亿";
}
// 判断数字,非法输入返回88
public int getCharNO(String readin) {
for(int i = 0;i < 15; i++){
if(readin.equals(c[i])){
return i;
}
}
return 88;
}
//中国人习惯,18就读十八,不读一十八,只好手动初始化,呵呵
public String formatInputSting(String s){
String fis="";
fis+=s.charAt(0);
if(fis.equals("十")){
return "一"+s;
}else{
return s;
}
}
public long getResult(String s) {
s=formatInputSting(s);
System.out.println(s);
for (int i=s.length()-1;i>=0;i--){
tmp+=s.charAt(i);
temp=caseop(tmp);
if (temp == -1) {
System.out.println("错误的参数输入");
return -1;
}
result += temp;
tmp = "";
} return result;
}
public long caseop(String s) {
long co = 0;
switch (getCharNO(s)) {
case 88:
return -1;
case 0:
return 0;
case 1:
co = 1 * flag * wan * yi;
flag = 1;
return co;
case 2:
co = 2 * flag * wan * yi;
flag = 1;
return co;
case 3:
co = 3 * flag * wan * yi;
flag = 1;
return co;
case 4:
co = 4 * flag * wan * yi;
flag = 1;
return co;
case 5:
co = 5 * flag * wan * yi;
flag = 1;
return co;
case 6:
co = 6 * flag * wan * yi;
flag = 1;
return co;
case 7:
co = 7 * flag * wan * yi;
flag = 1;
return co;
case 8:
co = 8 * flag * wan * yi;
flag = 1;
return co;
case 9:
co = 9 * flag * wan * yi;
flag = 1;
return co;
case 10:
flag = 10;
return 0;
case 11:
flag = 100;
return 0;
case 12:
flag = 1000;
return 0;
case 13:
wan = 10000;
return 0;
case 14:
yi = 10000;
wan = 10000;
return 0;
default:
return 0;
}
}
public static void main(String[] args) {
Test test = new Test();
test.init();
System.out.print("一亿三千万零五 "+test.getResult("一亿三千万零五"));
}
}我試過了,OK,應該還有BUG,樓主自己改動一下吧