java實現整數轉化為中文大寫金額的方法_mssql2008

來源:互聯網
上載者:User

在日常生活中,我們經常會將阿拉伯數字轉化為中文大寫的情況:"零", "壹", "貳", "三", "肆", "伍", "陸", "柒", "捌", "玖", "拾", "佰", "仟", "萬", "億",因此自己就編寫一個類,實現該功能的轉化。
實現過程:
對於這個問題的實現,我們首先把數字按四位一個拆開(符合我們讀數位習慣),然後對這四位元,做出他的讀法,具體代碼如下:

private static String getNumberStr1000 (int num) {  if (num > 9999 || num < 0) {   return "";  }  int q = num / 1000;  int b = (num / 100) % 10;  int s = (num / 10) % 10;  int g = num % 10;  StringBuffer sb = new StringBuffer();  //千  if (q > 0) {   sb.append(NUMBER1[q]);   sb.append(NUMBER2[3]);  }  //百  if (b > 0) {   sb.append(NUMBER1[b]);   sb.append(NUMBER2[2]);  } else {   if (q != 0) {    sb.append(NUMBER2[0]);   }  }  //十  if (s > 0) {   sb.append(NUMBER1[s]);   sb.append(NUMBER2[1]);  } else {   if (b != 0) {    sb.append(NUMBER2[0]);   }  }  //個  if (g > 0) {   sb.append(NUMBER1[g]);  }  return sb.toString(); } 

下面我們只需要在編寫一個方法,實現每個四位元的讀法以及對應的單位即可,具體代碼如下:

public static String getNumberStr(int num) {  if (num < 0) {   return "";  }  if (num == 0) {   return NUMBER1[0];  }  int split = 10000;  int y = num / (split * split);  int w = (num / split) % split;  int g = num % split;  StringBuffer sb = new StringBuffer();  //億  if (y > 0) {   sb.append(getNumberStr1000(y));   sb.append(NUMBER2[5]);  }  //萬  if (w > 999) {   sb.append(getNumberStr1000(w));   sb.append(NUMBER2[4]);  } else {   if (w > 0) {    if (y != 0) {     sb.append(NUMBER2[0]);    }    sb.append(getNumberStr1000(w));    sb.append(NUMBER2[4]);   }  }  //萬以下  if (g > 0) {   if (w != 0) {    if (g > 999) {     sb.append(getNumberStr1000(g));    } else {     sb.append(NUMBER2[0]);     sb.append(getNumberStr1000(g));    }       } else {    if (y != 0) {     sb.append(NUMBER2[0]);    }    sb.append(getNumberStr1000(g));   }  }  return sb.toString(); } 

完整原始碼:

 /**  *@Description:   */ package com.lulei.util;  public class NumberUtil {  private static String[] NUMBER1 = {"零", "壹", "貳", "三", "肆", "伍", "陸", "柒", "捌", "玖"};  private static String[] NUMBER2 = {"零", "拾", "佰", "仟", "萬", "億"};    /**   * @param num   * @return   * @Author:lulei   * @Description:將數字轉化為大寫   */  public static String getNumberStr(int num) {   if (num < 0) {    return "";   }   if (num == 0) {    return NUMBER1[0];   }   int split = 10000;   int y = num / (split * split);   int w = (num / split) % split;   int g = num % split;   StringBuffer sb = new StringBuffer();   //億   if (y > 0) {    sb.append(getNumberStr1000(y));    sb.append(NUMBER2[5]);   }   //萬   if (w > 999) {    sb.append(getNumberStr1000(w));    sb.append(NUMBER2[4]);   } else {    if (w > 0) {     if (y != 0) {      sb.append(NUMBER2[0]);     }     sb.append(getNumberStr1000(w));     sb.append(NUMBER2[4]);    }   }   //萬以下   if (g > 0) {    if (w != 0) {     if (g > 999) {      sb.append(getNumberStr1000(g));     } else {      sb.append(NUMBER2[0]);      sb.append(getNumberStr1000(g));     }         } else {     if (y != 0) {      sb.append(NUMBER2[0]);     }     sb.append(getNumberStr1000(g));    }   }   return sb.toString();  }    /**   * @param num   * @return   * @Description:對萬以下的數字進行大小寫轉化   */  private static String getNumberStr1000 (int num) {   if (num > 9999 || num < 0) {    return "";   }   int q = num / 1000;   int b = (num / 100) % 10;   int s = (num / 10) % 10;   int g = num % 10;   StringBuffer sb = new StringBuffer();   //千   if (q > 0) {    sb.append(NUMBER1[q]);    sb.append(NUMBER2[3]);   }   //百   if (b > 0) {    sb.append(NUMBER1[b]);    sb.append(NUMBER2[2]);   } else {    if (q != 0) {     sb.append(NUMBER2[0]);    }   }   //十   if (s > 0) {    sb.append(NUMBER1[s]);    sb.append(NUMBER2[1]);   } else {    if (b != 0) {     sb.append(NUMBER2[0]);    }   }   //個   if (g > 0) {    sb.append(NUMBER1[g]);   }   return sb.toString();  }   public static void main(String[] args) {   // TODO Auto-generated method stub   int i = 1;   System.out.println(i + "--" + NumberUtil.getNumberStr(i));   i = 1001;   System.out.println(i + "--" + NumberUtil.getNumberStr(i));   i = 100101;   System.out.println(i + "--" + NumberUtil.getNumberStr(i));   i = 10100101;   System.out.println(i + "--" + NumberUtil.getNumberStr(i));   i = 1234567890;   System.out.println(i + "--" + NumberUtil.getNumberStr(i));  }  }

 測試回合結果:

希望本文所述對大家學習java程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.