如何將數字轉化為中文大寫
阿新 • • 發佈:2019-01-06
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);
}
}
/*
* 專案內容:當輸入數字時候,轉換為大寫的中文數字
* 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);
}
}