1. 程式人生 > >java實現錢數數字到大寫的轉換聯絡

java實現錢數數字到大寫的轉換聯絡

package com.slowly.java;

import java.util.Scanner;


/**
 * Description:
 * <br/>網站: <a href="http://www.crazyit.org">瘋狂Java聯盟</a>
 * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author Yeeku.H.Lee 
[email protected]
* @version 1.0 */ public class Num2Rmb02 { private String[] hanArr = {"零" , "壹" , "貳" , "叄" , "肆" , "伍" , "陸" , "柒" , "捌" , "玖"}; private String[] unitArr = {"十" , "百" , "千","萬","十萬","百萬","千萬","億","十","百","千","萬","千萬","億"}; private String[] unitArr1 = {"分" , "角"}; /** * 把一個浮點數分解成整數部分和小數部分字串 * @param num 需要被分解的浮點數 * @return 分解出來的整數部分和小數部分。第一個陣列元素是整數部分,第二個陣列元素是小數部分。 */ private String[] divide(double num) { // 將一個浮點數強制型別轉換為long,即得到它的整數部分 int zheng = (int)num; // 浮點數減去整數部分,得到小數部分,小數部分乘以100後再取整得到2位小數 int xiao = (int) Math.round((num - zheng) * 100); // 下面用了2種方法把整數轉換為字串 return new String[]{zheng + "", String.valueOf(xiao)}; } private int[] toNum(double num) { int num1 = (int)num; Integer zheng = (Integer)num1; //String s1 = zheng.toString(); //Integer numk1 = (int) (zheng%10000);//取整數的底四位 String s1 = zheng.toString(); int numLen1 = s1.length(); int[] numarry = new int[numLen1]; for(int i=0;i<numLen1;i++) { numarry[i] = s1.charAt(i) - 48; //numarry[0][i]=numarry1[i]; //System.out.println(numarry[i]); } return numarry; } /** * 把一個四位的數字字串變成漢字字串 * @param numStr 需要被轉換的四位的數字字串 * @return 四位的數字字串被轉換成的漢字字串。 */ private String toHanStr(int[] numarry) { String result = ""; int numLen = numarry.length; // 依次遍歷數字字串的每一位數字 for (int i = 0 ; i < numLen ; i++ ) { // 把char型數字轉換成的int型數字,因為它們的ASCII碼值恰好相差48 // 因此把char型數字減去48得到int型數字,例如'4'被轉換成4。 // int num = numarry.charAt(i) - 48; // 如果不是最後一位數字,而且數字不是零,則需要新增單位(千、百、十) if ( i != numLen - 1&& numarry[i]!= 0 ) { result += hanArr[numarry[i]] + unitArr[numLen - 2 - i]; } else if (i>0 ) { if ((numarry[i]==0)&&(numarry[i-1]==0) ) { //result +=""; } } else if(i == numLen - 1&& numarry[i]== 0 ) { } // 否則不要新增單位 else { result += hanArr[numarry[i]]; } } return result; } private String toHanStr1(String numStr) { String result = ""; int numLen = numStr.length(); // 依次遍歷數字字串的每一位數字 for (int i = 0 ; i < numLen ; i++ ) { // 把char型數字轉換成的int型數字,因為它們的ASCII碼值恰好相差48 // 因此把char型數字減去48得到int型數字,例如'4'被轉換成4。 int num = numStr.charAt(i) - 48; // 如果不是最後一位數字,而且數字不是零,則需要新增單位(千、百、十) if ( i != numLen - 1 && num != 0) { result += hanArr[num] + unitArr1[numLen - 1 - i]; } // 否則不要新增單位 else { result += hanArr[num]; } } return result+"分"; } public static void main(String[] args) { System.out.println("請輸入要轉換的錢數:"); @SuppressWarnings("resource") Scanner in = new Scanner(System.in); Double inmun = in.nextDouble(); Num2Rmb02 nr = new Num2Rmb02(); // 測試把一個浮點數分解成整數部分和小數部分 //System.out.println(Arrays.toString(nr.divide(236711125.123))); // 測試把一個四位的數字字串變成漢字字串 System.out.print(nr.toHanStr(nr.toNum(inmun))+"圓"); System.out.print(nr.toHanStr1(nr.divide(inmun)[1])); //System.out.println(nr.toHanStr("100")); } }