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;
 }
}
大致思路是这个样子的吧。
