1. 程式人生 > >如何將數字轉化為中文大寫

如何將數字轉化為中文大寫

public class changeIntToCN {
  /*
   * 專案內容:當輸入數字時候,轉換為大寫的中文數字
   * 1.先定義數字以及交易符的中文標籤
   * 2.分開處理數字
   * 3.整合輸出
   *
   */
 private static final String[] NUMBER_CN= {"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"};
 private static final String[] MONEY_CN= {"元","拾","百","仟","萬","拾","百","仟","億"};
 private static final String[] POIINT_CN= {"分","角"};
 
 String head="";
 String end="";
 int newNum;
 String newNum1;
 //定義構造方法,這樣其實可以省了一些程式碼
 public changeIntToCN(String num) {
  //把num號碼進行處理
  //首先先要判斷該號碼是否有小數點,並把所穿進來的引數進行分割
  if(num.contains(".")) {
   int proint=num.indexOf(".");
   head=num.substring(0, proint);
   end=num.substring(proint+1);
   //判斷一下後面的小數,並判斷是否大約5.如果大約5.進1
   if(end.length()>2) {
    newNum=Integer.parseInt(end); //把數字轉成字串
    if(newNum%10>5) {      
     newNum+=10;
     newNum1=String.valueOf(newNum).substring(0, 2); //在把數字轉成字串 並截成2位
     end=newNum1;
    }
    else {
     end=end.substring(0,2);
    }
   }
  }else {
   head=num;
  }
  System.out.println("轉化為大寫字母后=====>"+getCN());
 }
 
 //定義一個方法用來遍歷匹配相關的資料
 public String getCN() {
  StringBuffer sbBuffer=new StringBuffer(); //定義一個字串緩衝區
  //首先處理頭的數字
  for(int i=0;i<head.length();i++) {
   //把東西轉進去緩衝區,而charAt的索引功效可以幫我們尋找在數組裡面的下標,當然charAt也要稍作處理,把他變成整形 ,才能開啟詢標之旅喲 備註:charAt返回的是一個char型別
   sbBuffer.append(NUMBER_CN[getInt(head.charAt(i))]);
   sbBuffer.append(MONEY_CN[head.length()-1-i]);
  }
  //處理小數點後面的事情了
  for(int i=0;i<end.length();i++) {
    sbBuffer.append(NUMBER_CN[getInt(end.charAt(i))]);
    sbBuffer.append(POINY_CN[end.length()-1-i]);
   }
  
  
  return sbBuffer.toString();
  
 }
 public int getInt(char c) {
  String string=String.valueOf(c);
  return Integer.parseInt(string);
  
 }
 public static void main(String[] args) {
  Scanner input=new Scanner(System.in);
  System.out.println("請輸入數字");
  String no=input.next();
  changeIntToCN changeIntToCN=new changeIntToCN(no);
 }
 
}