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+"元";
}
}