天天看點

将數字轉換為中文

 import java.io.bufferedreader;  

3.import java.io.ioexception;  

4.import java.io.inputstreamreader;  

5.//最高支援12位千億位 可以擴充但沒有必要。  

6.public class number2chinese {  

7.   public static void main(string [] arg) throws ioexception{  

8.            //得到鍵盤輸入的值  

9.            bufferedreader buf = new bufferedreader(new inputstreamreader(system.in));  

10.            string str = buf.readline();  

11.            number2chinese num = new number2chinese();  

12.           string str2 = num.change(str);  

13.           system.out.println(num.init(str2));  

14.     }  

15.   public  string init(string str){  

16.         str=str.replace('0', '零');  

17.         str=str.replace('1', '一');  

18.         str=str.replace('2', '二');  

19.         str=str.replace('3', '三');  

20.         str=str.replace('4', '四');  

21.         str=str.replace('5', '五');  

22.         str=str.replace('6', '六');  

23.         str=str.replace('7', '七');  

24.         str=str.replace('8', '八');  

25.         str=str.replace('9', '九');  

26.         str=str.replace("零零", "零");  

27.        return str;  

28.     }  

29.   public  static string  sub(string str){//擷取每四位的子串  

30.     stringbuffer stb = new stringbuffer();  

31.     int leng = str.length();  

32.         if(leng%4==1){  

33.             stb.append(str.charat(0));  

34.         }  

35.         if(leng%4==2){  

36.             stb.append(str.charat(0)+"拾"+(str.charat(1)=='0'?"":str.charat(1)));  

37.         }  

38.         if(leng%4==3){  

39.             stb.append(  

40.                    str.charat(0)+"佰" 

41.                    +(str.charat(1)=='0'?(str.charat(2)=='0'?"":'零'):(str.charat(1)+"拾"))  

42.                    +(str.charat(2)=='0'?"":str.charat(2)));  

43.         }  

44.     if(leng%4==0){   

45.         if("0000".equals(str))stb.append("");  

46.         if(str.charat(0)=='0'){stb.append( ""+  

47.           (str.charat(1)=='0'?(str.charat(2)=='0'?(str.charat(3)=='0'?"":'零'):'零'):(str.charat(1)+"佰"))  

48.            +(str.charat(2)=='0'?(str.charat(3)=='0'?"":'零'):(str.charat(2)+"拾"))  

49.            +(str.charat(3)=='0'?"":str.charat(3)));}  

50.         else stb.append(  

51.            str.charat(0)+"仟" 

52.            + (str.charat(1)=='0'?(str.charat(2)=='0'?(str.charat(3)=='0'?"":'零'):'零'):(str.charat(1)+"佰"))  

53.            +(str.charat(2)=='0'?(str.charat(3)=='0'?"":'零'):(str.charat(2)+"拾"))  

54.            +(str.charat(3)=='0'?"":str.charat(3)));  

55.     }  

56.         return stb.tostring();  

57.     }  

58.  public  string change(string str){  

59.         stringbuffer strbuf = new stringbuffer();  

60.         int len = str.length();  

61.            if(len>8){  

62.                string a = str.substring(0,len-8);  

63.                string ag = number2chinese.sub(a);  

64.                strbuf.append(ag+"億");  

65.            }  

66.            if(len>4){  

67.                string b = str.substring(len>8?len-8:0,len-4);  

68.                string bg = number2chinese.sub(b);  

69.                if(!"0000".equals(b))strbuf.append(bg+"萬");  

70.                else strbuf.append("");  

71.            }  

72.             string c = str.substring(len-4>0?len-4:0,len);  

73.             string cg = number2chinese.sub(c);  

74.             strbuf.append(cg);  

75.         return strbuf.tostring();  

76.     }  

77.}