更多課程 選擇中心
        Java培訓

        400-111-8989

        Java培訓 > Java問答庫  > 正文

        將數字貨幣金額轉換為大寫格式

        • 發布:達內
        • 來源:達內
        • 時間:2015-10-16 16:36

        【實例描述】
        在處理財務賬款時,一般需要使用大寫金額。如果在銀行進行儲蓄或轉賬,也需要將數字金
        額寫成大寫格式。也就是說,如果要轉賬123456 元,則
        需要寫成“壹拾貳萬叁仟肆佰伍拾陸元整”。對于這種情
        況,如果手動填寫不僅麻煩,而且容易出錯,所以我們
        可以設計一個程序來自動完成數字格式的轉換。本實例
        實現了小寫金額到大寫金額的轉換,實例的運行效果如
        圖4.2 所示。
        圖4.2 將數字貨幣金額轉換為大寫格式

        【實現過程】
        (1)在Eclipse 中新建項目MoneyConvert,并在其中創建一個MoneyConvert.java 文件。
        在該類的主方法中創建標準輸入流的掃描器對象,接收用戶輸入的數字金額。然后在通過
        convert()方法把這個金額轉換成大寫金額的字符串格式,并輸出到控制臺。核心代碼如下所示:
        public static void main(String[] args) {
        Scanner scan = new Scanner(System.in); // 創建掃描器
        System.out.println("請輸入一個金額");
        // 獲取金額轉換后的字符串
        String convert = convert(scan.nextDouble());
        System.out.println(convert); // 輸出轉換結果
        }
        (2)編寫金額轉換方法convert(),該方法在主方法中被調用,用于金額數字向大寫格式的
        轉換。在該方法中創建DecimalFormat 類的實例對象,通過這個格式器對象把金額數字格式化,
        只保留三位小數。然后分別調用getInteger()與getDecimal()方法轉換整數與小數部分,并返回
        轉換后的結果。關鍵代碼如下:
        public static String convert(double d) {
        // 實例化DecimalFormat 對象

        DecimalFormat df = new DecimalFormat("#0.###");
        // 格式化double 數字
        String strNum = df.format(d);
        // 判斷是否包含小數點
        if (strNum.indexOf(".") != -1) {
        String num = strNum.substring(0, strNum.indexOf("."));
        // 整數部分大于12 不能轉換
        if (num.length() > 12) {
        System.out.println("數字太大,不能完成轉換!");
        return "";
        }
        }
        String point = ""; // 小數點
        if (strNum.indexOf(".") != -1) {
        point = "元";
        } else {
        point = "元整";
        }
        // 轉換結果
        String result = getInteger(strNum) + point + getDecimal(strNum);
        if (result.startsWith("元")) { // 判斷是字符串是否已"元"結尾
        result = result.substring(1, result.length()); // 截取字符串

        }
        return result; // 返回新的字符串
        }
        (3)編寫getInteger()方法,用于轉換數字整數部分的大寫格式。在該方法中判斷數字是否
        包含小數點,然后把數字轉換為字符串并反轉字符順序,為每個數字添加對應的大寫單位。關
        鍵代碼如下:
        public static String getInteger(String num) {
        if (num.indexOf(".") != -1) { // 判斷是否包含小數點
        um = num.substring(0, num.indexOf("."));

        }
        um = new StringBuffer(num).reverse().toString(); // 反轉字符串
        StringBuffer temp = new StringBuffer(); // 創建一個StringBuffer
        對象
        for (int i = 0; i < num.length(); i++) { // 加入單位
        temp.append(STR_UNIT[i]);
        temp.append(STR_NUMBER[num.charAt(i) - 48]);
        }
        um = temp.reverse().toString(); // 反轉字符串
        um = numReplace(num, "零拾", "零"); // 替換字符串的字符
        um = numReplace(num, "零佰", "零"); // 替換字符串的字符
        um = numReplace(num, "零仟", "零"); // 替換字符串的字符
        um = numReplace(num, "零萬", "萬"); // 替換字符串的字符
        um = numReplace(num, "零億", "億"); // 替換字符串的字符
        um = umReplace(num, "零零", "零"); // 替換字符串的字符
        um = numReplace(num, "億萬", "億"); // 替換字符串的字符
        // 如果字符串以零結尾將其除去
        if (num.lastIndexOf("零") == num.length() - 1) {
        um = num.substring(0, num.length() - 1);
        }
        return um;
        }
        public static String getDecimal(String num) {
        // 判斷是否包含小數點

        if (num.indexOf(".") == -1) {
        return "";
        }
        um = um.substring(num.indexOf(".") + 1);
        // 反轉字符串
        um = new StringBuffer(num).reverse().toString();
        // 創建一個StringBuffer 對象
        StringBuffer temp = new StringBuffer();
        // 加入單位
        for (int i = 0; i < num.length(); i++) {
        temp.append(STR_UNIT2[i]);
        temp.append(STR_NUMBER[num.charAt(i) - 48]);
        }
        um = temp.reverse().toString(); // 替換字符串的字符
        um = umReplace(num, "零角", "零"); // 替換字符串的字符
        um = numReplace(num, "零分", "零"); // 替換字符串的字符
        um = numReplace(num, "零厘", "零"); // 替換字符串的字符
        um = umReplace(num, "零零", "零"); // 替換字符串的字符
        // 如果字符串以零結尾將其除去
        if (num.lastIndexOf("零") == num.length() - 1) {
        um = num.substring(0, um.length() - 1);
        }
        return num;
        }
        public static String umReplace(String num, String oldStr, String newStr)
        {
        while (true) {
        // 判斷字符串中是否包含指定字符
        if (num.indexOf(oldStr) == -1) {
        break;
        }
        // 替換字符串

        num = num.replaceAll(oldStr, newStr);
        }
        // 返回替換后的字符串
        return um;
        }

        【代碼解析】
        實現本實例的關鍵在于以下幾點:
        ? 將數字格式化,如果存在小數部分,將其轉換為3 位小數,精確到厘。
        ? 分別將整數部分與小數部分轉換為大寫格式,并插入其單位(億、萬、仟……)。
        ? 組合轉換后的整數部分與小數部分。
        【知識擴展】
        DecimalFormat 類可以指定格式化模板來格式化浮點數,如保留幾位小數。通過調用該類
        的format()方法可以使用指定模板來格式化任意浮點數字。

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:達內java培訓專家教你如何輸入的網站用戶名找回密碼
        下一篇:java語言中如何判斷字符串是否為數字
        非計算機專業能學Java軟件開發嗎?

        非計算機專業能學Java軟件開發嗎?

        現在學Java還有發展前途嗎?

        現在學Java還有發展前途嗎?

        轉行學Java有可能成為高薪大牛嗎?

        轉行學Java有可能成為高薪大牛嗎?

        想學好Java應該怎么學?

        想學好Java應該怎么學?

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        貴州省

        福建省

        • 達內廈門軟件園中心
        廣西省

        海南省

        国产高清情侣视频2019年,限制电影福利在线观看,23伊人大香蕉 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>