通用金钱转换类

package myTest;

/**
*通用型金钱转换类
*
*/
public class Money {
	private String HanDigiStr[] = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
	private String HanDiviStr[] = new String[] { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾",
			"佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };

	String PositiveIntegerToHanStr(String NumStr) {
		String RMBStr = "";
		boolean lastzero = false;
		// 亿、万进位前有数值标记
		boolean hasvalue = false; 
		int len, n;
		len = NumStr.length();
		if (len > 15)
			return "数值过大!";
		for (int i = len - 1; i >= 0; i--) {
			if (NumStr.charAt(len - i - 1) == ' ')
				continue;
			n = NumStr.charAt(len - i - 1) - '0';
			if (n < 0 || n > 9)
				return "输入含非数字字符!";
			if (n != 0) {
				if (lastzero)
					RMBStr += HanDigiStr[0];
				// 十进位处于第一位不发壹音
				if (!(n == 1 && (i % 4) == 1 && i == len - 1)) 
					RMBStr += HanDigiStr[n];
					// 非零值后加进位,个位为空
					RMBStr += HanDiviStr[i]; 
					// 置万进位前有值标记
					hasvalue = true; 
			} else {
					// 亿万之间必须有非零值方显示万
				if ((i % 8) == 0 || ((i % 8) == 4 && hasvalue)) 
					// “亿”或“万”
					RMBStr += HanDiviStr[i]; 
			}
			if (i % 8 == 0)
				// 万进位前有值标记逢亿复位
				hasvalue = false; 
				lastzero = (n == 0) && (i % 4 != 0);
		}
		// 输入空字符或"0",返回"零"
		if (RMBStr.length() == 0)
			return HanDigiStr[0]; 
		System.out.println(RMBStr+"圆");
		return RMBStr+"元";
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值