java實現(xiàn)整數(shù)轉化為中文大寫金額的方法
在日常生活中,我們經(jīng)常會將阿拉伯數(shù)字轉化為中文大寫的情況:"零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖", "拾", "佰", "仟", "萬", "億",因此自己就編寫一個類,實現(xiàn)該功能的轉化。
實現(xiàn)過程:
對于這個問題的實現(xiàn),我們首先把數(shù)字按四位一個拆開(符合我們讀數(shù)字的習慣),然后對這四位數(shù),做出他的讀法,具體代碼如下:
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();
}
下面我們只需要在編寫一個方法,實現(xiàn)每個四位數(shù)的讀法以及對應的單位即可,具體代碼如下:
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:將數(shù)字轉化為大寫
*/
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:對萬以下的數(shù)字進行大小寫轉化
*/
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程序設計有所幫助。
相關文章
SQL Server 2008登錄錯誤:無法連接到(local)解決方法
在一些朋友安裝完SQL Server 2008之后大多會遇到連接出錯的問題比如:SQL Server 2008登錄錯誤:無法連接到(local)等等相關問題,本文將詳細介紹解決方法,需要的朋友可以參考下2012-12-12
如何在SQL Server 2008下輕松調試T-SQL語句和存儲過程
sqlserver2008調試的要求和條件:如果在引擎所在的電腦或服務器上調試,則只需要SA或者WINDOWS用戶登陸即可。如果是異地調試,則需要設置防火墻例外,增加SSMS和SQLSERVER.EXE為允許,增加135端口允許通過2013-10-10
Microsoft SQL Server 2008安裝圖解教程(Windows 7)
本文詳細介紹了SQL Server 2008的完整安裝過程,但未介紹關于SP1補丁安裝說明,在Windows 7系統(tǒng)上運行必須安裝此補丁,對于部分服務的配置也未做詳細的介紹2012-07-07
使用Navicat Premium將SQLServer數(shù)據(jù)導出為sql格式
這篇文章主要介紹了使用Navicat Premium將SQLServer數(shù)據(jù)導出為sql格式,需要的朋友可以參考下2016-12-12
SQL Server 2008數(shù)據(jù)庫誤刪數(shù)據(jù)如何進行數(shù)據(jù)恢復
這篇文章主要為大家詳細介紹了SQL Server 2008數(shù)據(jù)庫誤刪數(shù)據(jù)如何進行數(shù)據(jù)恢復的方法,感興趣的小伙伴們可以參考一下2016-05-05
SQL Server2008導出數(shù)據(jù)之Excel詳細解析
我覺得數(shù)據(jù)庫的導入和導出很有用,順便做一下總結,以免將來有遺忘。需要的朋友可以過來參考下2013-08-08

