java數字轉中文大寫貨幣
1. java中如何把一個整型數字轉換成中文大寫
這個找個JAR包去就行了,網上也有源序的。
2. java如何將數字轉為中文大寫
import org.apache.commons.lang3.StringUtils;
 
/**
 * @Title: ConvertUpMoney
 * @Description:  將數字金額轉換為大寫中文金額
 * @date: 2019年6月18日 下午10:52:27
 */
public class ConvertUpMoney {
 
    // 大寫數字
    private static final String[] NUMBERS = {"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"};
    // 整數部分的單位
    private static final String[] IUNIT = {"元","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟","萬","拾","佰","仟"};
    // 小數部分的單位
    private static final String[] DUNIT = {"角","分","厘"};
/**
     *  轉換為大寫的中文金額
     * @param str 字元串類型的 金額數字
     * @return
     */
    public static String toChinese(String str) {
        // 判斷輸入的金額字元串是否符合要求
        if (StringUtils.isBlank(str) || !str.matches("(-)?[\\d]*(.)?[\\d]*")) {
            return "抱歉,請輸入數字!";
        }
 
        if("0".equals(str) || "0.00".equals(str) || "0.0".equals(str)) {
            return "零元";
        }
 
        // 判斷金額數字中是否存在負號"-"
        boolean flag = false;
        if(str.startsWith("-")){
            // 標志位,標志此金額數字為負數
            flag = true;
            str = str.replaceAll("-", "");
        }
 
        // 去掉金額數字中的逗號","
        str = str.replaceAll(",", "");
        String integerStr;//整數部分數字
        String decimalStr;//小數部分數字
 
        // 初始化:分離整數部分和小數部分
        if(str.indexOf(".")>0) {
            integerStr = str.substring(0,str.indexOf("."));
            decimalStr = str.substring(str.indexOf(".") + 1);
        }else if(str.indexOf(".")==0) {
            integerStr = "";
            decimalStr = str.substring(1);
        }else {
            integerStr = str;
            decimalStr = "";
        }
 
        // beyond超出計算能力,直接返回
        if(integerStr.length()>IUNIT.length) {
            return "超出計算能力!";
        }
 
        // 整數部分數字
        int[] integers = toIntArray(integerStr);
        // 判斷整數部分是否存在輸入012的情況
        if (integers.length>1 && integers[0] == 0) {
            return "抱歉,輸入數字不符合要求!";
        }
        // 設置萬單位
        boolean isWan = isWan5(integerStr);
        // 小數部分數字
        int[] decimals = toIntArray(decimalStr);
        // 返回最終的大寫金額
        String result = getChineseInteger(integers, isWan) + getChineseDecimal(decimals);
        if(flag){
            // 如果是負數,加上"負"
            return "負" + result;
        }else{
            return result;
        }
    }
 
    /**
     *  將字元串轉為int數組
     * @param number  數字
     * @return
     */
    private static int[] toIntArray(String number) {
        int[] array = new int[number.length()];
        for(int i = 0;i<number.length();i++) {
            array[i] = Integer.parseInt(number.substring(i,i+1));
        }
        return array;
    }
 
    /**
     *  將整數部分轉為大寫的金額
     * @param integers 整數部分數字
     * @param isWan  整數部分是否已經是達到【萬】
     * @return
     */
    public static String getChineseInteger(int[] integers,boolean isWan) {
        StringBuffer chineseInteger = new StringBuffer("");
        int length = integers.length;
        if (length == 1 && integers[0] == 0) {
            return "";
        }
        for(int i=0; i<length; i++) {
            String key = "";
            if(integers[i] == 0) {
                if((length - i) == 13)//萬(億)
                    key = IUNIT[4];
                else if((length - i) == 9) {//億
                    key = IUNIT[8];
                }else if((length - i) == 5 && isWan) {//萬
                    key = IUNIT[4];
                }else if((length - i) == 1) {//元
                    key = IUNIT[0];
                }
                if((length - i)>1 && integers[i+1]!=0) {
                    key += NUMBERS[0];
                }
            }
            chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length - i -1]));
        }
        return chineseInteger.toString();
    }
 
    /**
     *  將小數部分轉為大寫的金額
     * @param decimals 小數部分的數字
     * @return
     */
    private static String getChineseDecimal(int[] decimals) {
        StringBuffer chineseDecimal = new StringBuffer("");
        for(int i = 0;i<decimals.length;i++) {
            if(i == 3) {
                break;
            }
            chineseDecimal.append(decimals[i]==0?"":(NUMBERS[decimals[i]]+DUNIT[i]));
        }
        return chineseDecimal.toString();
    }
 
    /**
     *  判斷當前整數部分是否已經是達到【萬】
     * @param integerStr  整數部分數字
     * @return
     */
    private static boolean isWan5(String integerStr) {
        int length = integerStr.length();
        if(length > 4) {
            String subInteger = "";
            if(length > 8) {
                subInteger = integerStr.substring(length- 8,length -4);
            }else {
                subInteger = integerStr.substring(0,length - 4);
            }
            return Integer.parseInt(subInteger) > 0;
        }else {
            return false;
        }
    }
// Test
    public static void main(String[] args) {
        String number = "12.56";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "1234567890563886.123";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "1600";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "156,0";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "-156,0";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "0.12";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "0.0";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "01.12";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "0125";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "-0125";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        number = "sdw5655";
        System.out.println(number+": "+ConvertUpMoney.toChinese(number));
 
        System.out.println(null+": "+ConvertUpMoney.toChinese(null));
    }
}
3. Java 關於中文大寫金額與阿拉伯數字 互相轉換的問題(eclipse版)
eclipse中用java實現中文和阿拉伯數字互轉的方法如下:
import java.io.*;
import java.lang.IllegalArgumentException;
public class ConvertNum{
	/**
     * 把金額阿拉伯數字轉換為漢字表示,小數點後四捨五入保留兩位
	* 還有一種方法可以在轉換的過程中不考慮連續0的情況,然後對最終的結果進行一次遍歷合並連續的零
     */
	public static String [] ChineseNum = new String[]{"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"};
	public static String NumToChinese(double num){
	   if(num > 99999999999999.99 || num < -99999999999999.99)
            throw new IllegalArgumentException("參數值超出允許范圍 (-99999999999999.99 ~ 99999999999999.99)!");
		boolean negative = false;//正負標號
		if(num<0){
			negative = true;
			num = num*(-1);
		}
		long temp = Math.round(num*100);
		int numFen=(int)(temp%10);//分
		temp=temp/10;
		int numJiao = (int)(temp%10);//角
		temp=temp/10;
		//此時temp只包含整數部分
		int [] parts =new int[20];//將金額整數部分分為在0-9999之間數的各個部分
		int numParts = 0;//記錄把原來金額整數部分分割為幾個部分 
		for(int i=0;;i++){
			if(temp == 0)
				break;
			int part = (int)(temp%10000);
			parts[i] =part;
			temp = temp/10000;
			numParts++;
		}
		boolean beforeWanIsZero = true;//標志位,記錄萬的下一級是否為0
		String chineseStr = "";
		for(int i=0;i<numParts;i++){
			String partChinese = partConvert(parts[i]);
			if(i%2==0){
				if("".equals(partChinese))
					beforeWanIsZero = true;
				else
					beforeWanIsZero = false;
			}
			if(i!=0){
				if(i%2==0)//億的部分
					chineseStr = "億"+chineseStr;
				else{
					if("".equals(partChinese)&&!beforeWanIsZero)// 如果「萬」對應的 part 為 0,而「萬」下面一級不為 0,則不加「萬」,而加「零」
						chineseStr = "零"+chineseStr;
					else{
						if(parts[i-1]<1000&&parts[i-1]>0)//如果萬的部分不為0,而萬前面的部分小於1000大於0,則萬後面應該跟零
							chineseStr = "零"+chineseStr;
						chineseStr = "萬"+chineseStr;
					}
				}
			}
			chineseStr = partChinese + chineseStr;
		}
		if("".equals(chineseStr))//整數部分為0,則表示為零元
			chineseStr = ChineseNum[0];
		else if(negative)//整數部分部位0,但是為負數
			chineseStr = "負" +chineseStr;
		chineseStr = chineseStr + "元";
		if(numFen==0&&numJiao==0){
			chineseStr = chineseStr +"整";
		}
		else if(numFen==0){//0分
			chineseStr = chineseStr +ChineseNum[numJiao] + "角";
		}
		else{
			if(numJiao==0)
				chineseStr = chineseStr + "零" + ChineseNum[numFen] + "分";
            else
                chineseStr = chineseStr + ChineseNum[numJiao] + "角" + ChineseNum[numFen] + "分";
		}
		return chineseStr;
	}
	//轉換拆分後的每個部分,0-9999之間
	public static String partConvert(int partNum){
		if(partNum<0||partNum>10000){
			throw new IllegalArgumentException("參數必須是大於等於0或小於10000的整數");
		}
		String [] units = new String[]{"","拾","佰","仟"};
		int temp = partNum;
		String partResult = new Integer(partNum).toString();
		int partResultLength = partResult.length();
		boolean lastIsZero = true;//記錄上一位是否為0
		String chineseStr = "";
		for(int i=0;i<partResultLength;i++){
			if(temp == 0)//高位無數字
				break;
			int digit = temp%10;
			if(digit == 0){
				if(!lastIsZero)//如果前一個數字不是0則在當前漢字串前加零
					chineseStr = "零"+chineseStr;
				lastIsZero = true;
			}
			else{
				chineseStr = ChineseNum[digit] + units[i] +chineseStr;
				lastIsZero = false;
			}
			temp =temp/10;
		}
		return chineseStr;	
	}
	public static void main(String args []){
			double num = 0;
			System.out.println("請輸入金額數字,-1退出");
			try{
				BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				num = Double.parseDouble(br.readLine());
				}catch(IOException e){
					System.out.println(e.toString());
				}
			while(num!=-1){
				System.out.println(num+NumToChinese(num));
				try{
				BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				num = Double.parseDouble(br.readLine());
				}catch(IOException e){
					System.out.println(e.toString());
				}
			}
			System.out.println("其他測試:");
			System.out.println("100120: " + NumToChinese(100120));
			System.out.println("25000000000005.999: " + NumToChinese(25000000000005.999));
            System.out.println("45689263.626: " + NumToChinese(45689263.626));
            System.out.println("0.69457: " + NumToChinese(0.69457));
            System.out.println("253.0: " + NumToChinese(253.0));
            System.out.println("0: " + NumToChinese(0));
	}
}
4. 誰有簡化的方法用JAVA編寫一個把表示人民幣的阿拉伯數字轉化為大寫漢字的方法
public class RenMingBi {
	/**
	 * @param args add by zxx ,Nov 29, 2008
	 */
	private static final char[] data = new char[]{
			'零','壹','貳','叄','肆','伍','陸','柒','捌','玖'
		}; 
	private static final char[] units = new char[]{
		'元','拾','佰','仟','萬','拾','佰','仟','億'
	};
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(
				convert(135689123));
	}
	public static String convert(int money)
	{
		StringBuffer sbf = new StringBuffer();
		int unit = 0;
		while(money!=0)
		{
			sbf.insert(0,units[unit++]);
			int number = money%10;
			sbf.insert(0, data[number]);
			money /= 10;
		}
		return sbf.toString();
	}
}
5. Java中怎麼將小寫阿拉伯數字轉換成中文大寫,不是金額的轉行,而是直接轉換成大寫漢字。
public class Admin {
    public static void main(String[] args) {
        String[] arr = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖" };
        String str = "123456";
        char[] c = str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            int a = Integer.parseInt(String.valueOf(c[i]));
            System.out.print(arr[a]);
        }
    }
}
6. 用java將阿拉伯數字錢數轉換成中文大寫的演算法,數字是輸入的。
用條件判斷下,如果是第一個0的話,就輸出零,如果是其他0的話就不輸出應該就好了
7. java方式實現數字轉換成中文大寫
數組小標的問題吧,好好檢查一下,下標,最好使用debug
一步一步的看,到底是那一步出現問題。
我也有現成的代碼,如果實在不行,我可以給你一份。
希望 採納。
8. JAVA 數字轉換為中文大寫的轉換
package com.heyang;
/**
 * 將10億以內的阿拉伯數字轉成漢字大寫形式
 * @author xizhenyin
 * 
 */
public class CnUpperCaser {
  // 整數部分
  private String integerPart;
  // 小數部分
  private String floatPart;
  
  // 將數字轉化為漢字的數組,因為各個實例都要使用所以設為靜態
  private static final char[] cnNumbers={'零','壹','貳','叄','肆','伍','陸','柒','捌','玖'};
  
  // 供分級轉化的數組,因為各個實例都要使用所以設為靜態
  private static final char[] series={'元','拾','百','仟','萬','拾','百','仟','億'};
  
  /**
   * 構造函數,通過它將阿拉伯數字形式的字元串傳入
   * @param original
   */
  public CnUpperCaser(String original){ 
    // 成員變數初始化
    integerPart="";
    floatPart="";
    
    if(original.contains(".")){
      // 如果包含小數點
      int dotIndex=original.indexOf(".");
      integerPart=original.substring(0,dotIndex);
      floatPart=original.substring(dotIndex+1);
    }
    else{
      // 不包含小數點
      integerPart=original;
    }
  }
  
  /**
   * 取得大寫形式的字元串
   * @return
   */
  public String getCnString(){
    // 因為是累加所以用StringBuffer
    StringBuffer sb=new StringBuffer();
    
    // 整數部分處理
    for(int i=0;i<integerPart.length();i++){
      int number=getNumber(integerPart.charAt(i));
      
      sb.append(cnNumbers[number]);
      sb.append(series[integerPart.length()-1-i]);
    }
    
    // 小數部分處理
    if(floatPart.length()>0){
      sb.append("點");
      for(int i=0;i<floatPart.length();i++){
        int number=getNumber(floatPart.charAt(i));
        
        sb.append(cnNumbers[number]);
      }
    }
    
    // 返回拼接好的字元串
    return sb.toString();
  }
  
  /**
   * 將字元形式的數字轉化為整形數字
   * 因為所有實例都要用到所以用靜態修飾
   * @param c
   * @return
   */
  private static int getNumber(char c){
    String str=String.valueOf(c);   
    return Integer.parseInt(str);
  }
  
  /**
   * @param args
   */
  public static void main(String[] args) {
    System.out.println(new CnUpperCaser("123456789.12345").getCnString());
    System.out.println(new CnUpperCaser("123456789").getCnString());
    System.out.println(new CnUpperCaser(".123456789").getCnString());
    System.out.println(new CnUpperCaser("0.1234").getCnString());
    System.out.println(new CnUpperCaser("1").getCnString());
    System.out.println(new CnUpperCaser("12").getCnString());
    System.out.println(new CnUpperCaser("123").getCnString());
    System.out.println(new CnUpperCaser("1234").getCnString());
    System.out.println(new CnUpperCaser("12345").getCnString());
    System.out.println(new CnUpperCaser("123456").getCnString());
    System.out.println(new CnUpperCaser("1234567").getCnString());
    System.out.println(new CnUpperCaser("12345678").getCnString());
    System.out.println(new CnUpperCaser("123456789").getCnString());
  }
}
9. Java金額的中文大寫方式
/** 
 * 金額小數轉換成中文大寫金額 
 * @author Neil Han 
 *   
 */  
public class ConvertMoneyToUppercase {  
  
    private static final String UNIT[] = { "萬", "千", "佰", "拾", "億", "千", "佰",  
            "拾", "萬", "千", "佰", "拾", "元", "角", "分" };  
  
    private static final String NUM[] = { "零", "壹", "貳", "叄", "肆", "伍", "陸",  
            "柒", "捌", "玖" };  
  
    private static final double MAX_VALUE = 9999999999999.99D;  
  
    /** 
     * 將金額小數轉換成中文大寫金額 
     * @param money 
     * @return result 
     */  
    public static String convertMoney(double money) {  
        if (money < 0 || money > MAX_VALUE)  
            return "參數非法!";  
        long money1 = Math.round(money * 100); // 四捨五入到分  
        if (money1 == 0)  
            return "零元整";  
        String strMoney = String.valueOf(money1);  
        int numIndex = 0; // numIndex用於選擇金額數值  
        int unitIndex = UNIT.length - strMoney.length(); // unitIndex用於選擇金額單位  
        boolean isZero = false; // 用於判斷當前為是否為零  
        String result = "";  
        for (; numIndex < strMoney.length(); numIndex++, unitIndex++) {  
            char num = strMoney.charAt(numIndex);  
            if (num == '0') {  
                isZero = true;  
                if (UNIT[unitIndex] == "億" || UNIT[unitIndex] == "萬"  
                        || UNIT[unitIndex] == "元") { // 如果當前位是億、萬、元,且數值為零  
                    result = result + UNIT[unitIndex]; //補單位億、萬、元  
                    isZero = false;  
                }   
            }else {  
                if (isZero) {  
                    result = result + "零";  
                    isZero = false;  
                }  
                result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];  
            }  
        }  
        //不是角分結尾就加"整"字  
        if (!result.endsWith("角")&&!result.endsWith("分")) {  
            result = result + "整";  
        }  
        //例如沒有這行代碼,數值"400000001101.2",輸出就是"肆千億萬壹千壹佰零壹元貳角"  
        result = result.replaceAll("億萬", "億");  
        return result;  
    }  
  
    public static void main(String[] args) {  
        double value = Double.parseDouble("40330701101.2");  
        System.out.println("您輸入的金額(小寫)為:" + value);  
        System.out.println("您輸入的金額(大寫)為:" + convertMoney(value));  
    }  
  
}
10. 怎樣用Java將金額轉換為中文大寫形式
String words="12334";
for(int i=0 ; i<words.length ; i++)
{
  switch(words.charAt(i))
 {
   case "1":System.out.println("壹");break;
   case "2": 
         ..............
   case "0":System.out.println("零");break;
 }
}
大致思路是這個樣子的吧。
