把數字轉換成人民幣大寫的形式Java類

uyu 9年前發布 | 10K 次閱讀 Java

/**

  • @author sunpander

  • 把輸入的數字轉換成人民幣大寫的形式 */

import java.io.BufferedReader; import java.io.InputStreamReader;

public class ChangeNumToRMB {

String moneyStrs[] = { "零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖" };

public static void main(String[] args) {
    // TODO Auto-generated method stub
    boolean isDebug = true;
    while (isDebug) {
        int num = 0;
        String changedStr = "";
        System.out.println("請輸入需要轉換的金額:");
        BufferedReader br = new BufferedReader(new InputStreamReader(
                System.in));
        boolean isWrongInput = true;
        while (isWrongInput) {
            try {
                String str = br.readLine();

                num = Integer.parseInt(str);

            } catch (Exception e) {
                System.out.println("輸入數字有誤,必須是:0" + "到" + Integer.MAX_VALUE
                        + " 的整數");

                // TODO Auto-generated catch block
                // e.printStackTrace();
                isWrongInput = true;
                continue;
            }
            isWrongInput = false;
        }
        ChangeNumToRMB chan = new ChangeNumToRMB();
        changedStr = chan.getChangedString(num);
    }
}

public String getChangedString(int num) {

    // Money用于存放輸入的金額數
    int moneyNum = num;
    String moneyStr = "";
    System.out.println("輸入的錢數是:");
    if (moneyNum < 0) {
        System.out.println("數字必須大于零");
    } else if (moneyNum == 0) {
        moneyStr = "零元";
    }
    // 只有四位數,即最大9999.小于10000
    else if (moneyNum < 10000) {
        moneyStr = this.getFourNumStr(moneyNum) + "元";
    }
    // 大于一萬,小于一千萬
    else if (moneyNum <= 10000000)// && moneyNum>10000)
    {

        int firstFourNum, lastFourNum;
        firstFourNum = moneyNum / 10000;
        lastFourNum = moneyNum % 10000;
        String firstFourStr = this.getFourNumStr(firstFourNum);
        String lastFourStr = this.getFourNumStr(lastFourNum);
        if (!lastFourStr.contains("仟"))
            lastFourStr = "零" + lastFourStr;
        moneyStr = firstFourStr + "萬" + lastFourStr + "元";
    }
    // 大于一千萬.即上億但小于最大整數
    else if (moneyNum < Integer.MAX_VALUE)// && moneyNum>10000000)
    {
        int firstFourNum, secondFourNum, lastFourNum;
        firstFourNum = moneyNum / 100000000;
        secondFourNum = (moneyNum / 10000) % 1000;
        lastFourNum = moneyNum % 10000;
        String firstFourStr = this.getFourNumStr(firstFourNum);
        String secondFourStr = this.getFourNumStr(secondFourNum);
        String lastFourStr = this.getFourNumStr(lastFourNum);
        if (!lastFourStr.contains("仟"))
            lastFourStr = "零" + lastFourStr;
        if (!secondFourStr.contains("仟"))
            secondFourStr = "零" + secondFourStr;
        moneyStr = firstFourStr + "億" + secondFourStr + "萬" + lastFourStr
                + "元";
    } else
        System.out.println("someting    is wrong");
    System.out.println(moneyStr);
    return moneyStr;
}

public String getFourNumStr(int fourNum) {
    int qian, bai, shi, ge;
    ge = fourNum % 10;
    shi = (fourNum % 100) / 10;
    bai = (fourNum % 1000) / 100;
    qian = fourNum / 1000;
    String strTemp = "";
    if (qian != 0) {

        strTemp = strTemp.concat(moneyStrs[qian] + "仟");
        strTemp = strTemp.concat(moneyStrs[bai] + "佰");
        strTemp = strTemp.concat(moneyStrs[shi] + "什");
        strTemp = strTemp.concat(moneyStrs[ge]);

        strTemp = strTemp.replace("零佰", "零");
        strTemp = strTemp.replace("零什", "零");
        strTemp = strTemp.replace("零零", "零");
        strTemp = strTemp.replace("零零", "零");

        if (strTemp.endsWith("零"))
            strTemp = strTemp.substring(0, strTemp.length() - 1);
    } else if (bai != 0) {
        strTemp = strTemp.concat(moneyStrs[bai] + "佰");
        strTemp = strTemp.concat(moneyStrs[shi] + "什");
        strTemp = strTemp.concat(moneyStrs[ge]);

        strTemp = strTemp.replace("零什", "零");
        strTemp = strTemp.replace("零零", "零");

        if (strTemp.endsWith("零"))
            strTemp = strTemp.substring(0, strTemp.length() - 1);
    } else if (shi != 0) {

        strTemp = strTemp.concat(moneyStrs[shi] + "什");
        strTemp = strTemp.concat(moneyStrs[ge]);

        if (strTemp.endsWith("零"))
            strTemp = strTemp.substring(0, strTemp.length() - 1);
    } else
        strTemp.concat(moneyStrs[ge]);
    return strTemp;
}

}</pre>

 本文由用戶 uyu 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!