1. 程式人生 > >Java代碼數字轉中文

Java代碼數字轉中文

內部 tran com dig con @param bstr uil class

package datiqi.com.dtq.datiqi_teacher.autils;

import android.util.Log;

/**
* 數字 轉換
*/
public class DigitalConversion {

private static String nums[] = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};

private static String pos_units[] = {"", "十", "百", "千"};

private static String weight_units[] = {"", "萬", "億"};

/**
* 數字轉漢字【新】
*
* @param num
* @return
*/
public static String numberToChinese(int num) {
if (num == 0) {
return "零";
}

int weigth = 0;//節權位
String chinese = "";
String chinese_section = "";
boolean setZero = false;//下一小節是否需要零,第一次沒有上一小節所以為false
while (num > 0) {
int section = num % 10000;//得到最後面的小節
if (setZero) {//判斷上一小節的千位是否為零,是就設置零
chinese = nums[0] + chinese;
}
chinese_section = sectionTrans(section);
if (section != 0) {//判斷是都加節權位
chinese_section = chinese_section + weight_units[weigth];
}
chinese = chinese_section + chinese;
chinese_section = "";
Log.d("TAG", chinese_section);

setZero = (section < 1000) && (section > 0);
num = num / 10000;
weigth++;
}
if ((chinese.length() == 2 || (chinese.length() == 3)) && chinese.contains("一十")) {
chinese = chinese.substring(1, chinese.length());
}
if (chinese.indexOf("一十") == 0) {
chinese = chinese.replaceFirst("一十", "十");
}

return chinese;
}

/**
* 將每段數字轉漢子
*
* @param section
* @return
*/
public static String sectionTrans(int section) {
StringBuilder section_chinese = new StringBuilder();
int pos = 0;//小節內部權位的計數器
boolean zero = true;//小節內部的置零判斷,每一個小節只能有一個零。
while (section > 0) {
int v = section % 10;//得到最後一個數
if (v == 0) {
if (!zero) {
zero = true;//需要補零的操作,確保對連續多個零只是輸出一個
section_chinese.insert(0, nums[0]);
}
} else {
zero = false;//有非零數字就把置
section_chinese.insert(0, pos_units[pos]);
section_chinese.insert(0, nums[v]);
}
pos++;
section = section / 10;
}
return section_chinese.toString();
}
}

Java代碼數字轉中文