疯狂JAVA习题 数字转换成人民币

public class Num2Rmb{
private String[] hanArr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
private String[] unitArr = {"", "十", "佰", "仟"};
private String[] four_uinitArr = {"", "万", "亿"};
private String[] two_unitArr = {"角", "分"};

private String[] divide(double num)
{
String[] result = new String[2];

long iValue = (long)num;
int fValue = (int)((num - iValue)*100);

result[0] = ""+ iValue;
result[1] = ""+ fValue;
System.out.println("整数:" + result[0] + ", 小数:" + result[1]);
return result;
}

private String itoHanStr(String numstr)
{
int len = numstr.length();
int col = (len-1)/4;
int row = (len-1) % 4;
String result = "";
int index = 0;

if(len > 12)
{
System.out.println("too big, please enter again: \n");
return null;
}
System.out.println("col = " + col + ", row = " + row);
for(int i = 0; i <= col; i++)
{
for(int j = 0; j <= row; j++)
{
if(numstr.charAt(index) == '0')
{
if((numstr.charAt(index-1) == '0' && j != 0)|| j == row) 
{
index++;
continue;
}
result += hanArr[numstr.charAt(index) - '0'];
}
else
{
result += hanArr[numstr.charAt(index) - '0'];
result += unitArr[row-j];
}
index++;
}
result += four_uinitArr[col-i];
row = 3;
}

return result;
}
private String ftoHanStr(String numstr)
{
String result = "";

if(numstr == "00")
return null;
result += hanArr[numstr.charAt(0) - '0'];
if(numstr.charAt(0) != '0')
{
result += two_unitArr[0];
}
result += hanArr[numstr.charAt(1) - '0'];
if(numstr.charAt(1) != '0')
{
result += two_unitArr[1];
}
return result;
}

public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
//123 4567 8903
//1005200436.85
//105342006.85
double d = 1005200436.85;
String[] result = nr.divide(d);

System.out.println(nr.itoHanStr(result[0])+ "元");
System.out.println(nr.ftoHanStr(result[1]));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值