例如:12034024 --> 壹仟貳佰零叁萬(wàn)肆仟零貳拾肆
29092002 --> 貳仟玖佰零玖萬(wàn)貳仟貳
下面是java的原代碼:
import java.io.*;
import java.util.*;
public class ToUpperCaseNumber {
public static void main(String[] args) throws IOException {
System.out.println("輸入一個(gè)十億以?xún)鹊臄底郑?);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String input=br.readLine().trim();
String result="";
if(input.length()==9){
//例如:129322343,則取1、2932、2343數字字段來(lái)進(jìn)行處理
result+=doWithNumber(input.substring(0,1),5)+doWithNumber(input.substring(1,5),4)+doWithNumber(input.substring(5,9),0);
}else if(input.length()>4){
result+=doWithNumber(input.substring(0,input.length()-4),4)+doWithNumber(input.substring(input.length()-4),0);
}else{
result+=doWithNumber(input,0);
}
System.out.println(deleteZero(result));
}
static String[] UpperStr={"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"};
static String[] WeiStr={"","拾","佰","仟","萬(wàn)","億"};
static String doWithNumber(String number,int len){
int temp=Integer.parseInt(number); //將最長(cháng)4位數字轉換成數字可以去除多余的零
String result="";
if(temp==0) //如果為全部為零的情況則直接返回一個(gè)零
return UpperStr[0];
int[] str=new int[number.length()];
for (int i = 0; i < number.length(); i++) { //將每一個(gè)數字存儲到數組中
str[i]=Integer.parseInt(String.valueOf(number.charAt(i)));
}
//數字轉換
for (int i = 0; i < str.length; i++) {
if(str[i]==0){ //如果數字為0,則其單位名不要
result+=UpperStr[str[i]];
}else{ //如果數字不為0,則要加上單位名稱(chēng)如伍【十】
result+=UpperStr[str[i]]+WeiStr[str.length-i-1];
}
}
//處理伍千伍百零的情況
if(result.lastIndexOf(UpperStr[0])==result.length()-1)
result=result.substring(0,result.length()-1);
return result+WeiStr[len]; //加上這段數字最終的單位名稱(chēng):如伍千伍百【萬(wàn)】
}
static String deleteZero(String number){
for (int i = 0; i<number.length(); i++){
//處理有兩個(gè)或者兩個(gè)以上“零零”情況
int strIndex=number.indexOf(UpperStr[0]+UpperStr[0]);
if(strIndex>=0){
number=number.substring(0,strIndex)+number.substring(strIndex+2);
}
}
//處理最后個(gè)位數上可能出現的伍百【零】的情況
if(number.lastIndexOf(UpperStr[0])==number.length()-1)
number=number.substring(0,number.length()-1);
return number;
}
}