java编写一程序将一个int数字转移成中文数字的金额(如:13099 -> 一万三千零九十九)

 我来答
hitzsf
2011-08-24 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1202万
展开全部
我写过一个 数字转人民币金额的程序,这个程序挺啰嗦的,不过倒是符合人民币大写规范
代码如下,经过部分测试,符合人民币书写方式,如果还有问题,请给我发消息,我再修改

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

private String divide(double num){
long zheng = (long) num ;
long xiao = Math.round((num - zheng) * 100);

System.out.println(String.valueOf(zheng));
System.out.println(xiao < 10?"0"+String.valueOf(xiao):String.valueOf(xiao));

String temp = String.valueOf(zheng) + (xiao < 10?"0"+String.valueOf(xiao):String.valueOf(xiao));
System.out.println(temp);
return temp;
}

private String toHanStr(String numStr){
String result = "";
int numLen = numStr.length();
long j = Long.parseLong(numStr);

if (j == 0){
result = "零元";
return result;
}

int temp = 0;

for(int i = 0; i < numLen; i++){
int num = numStr.charAt(i) - 48;

if( num != 0 ){ //如果数字不为0,直接变成数字与单位
result += hanArr[num] + unitArr[numLen -1 -i];
}

else if (num == 0 && i==0 ){ //如果数字为0,且是第一位,直接变成零
result += hanArr[num];
}

else if (num == 0 && result.charAt(result.length() -1) != '零' ){
result += hanArr[num]; //如果数字为0,且前面不是‘零’,保证只有1个零,类似1001元
}

if ( i == numLen -11 && result.charAt(result.length() -1) == '零'){
result = result.substring(0,result.length() -1) + "亿";
}

if ( i == numLen -7 && result.charAt(result.length() -1) == '零'){
result = result.substring(0,result.length() -1) + "万";
}

if ( i == numLen -3 && result.charAt(result.length() -1) == '零'){
result = result.substring(0,result.length() -1) + "元";
}
}

temp = result.lastIndexOf("万");
if (temp != -1 && result.charAt(temp - 1) == '亿'){
result = result.substring(0, temp) + result.substring(temp+1);
}

temp = result.indexOf("元");
if (temp ==0 ){
result = result.substring(1);
}

temp = result.indexOf("零");
if (temp ==0 ){
result = result.substring(1);
}

if (result.charAt(result.length() - 1) == '零' )
result = result.substring(0,result.length() - 1);

if (result.charAt(result.length() - 1) == '元')
result += "整";

result = "人民币" + result;

return result;
}

public static void main(String[] args) {
Num2Rmb nr = new Num2Rmb();
String nrStr = nr.divide(1);
System.out.println(nr.toHanStr(nrStr));

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
梦冷凝
2011-08-24 · TA获得超过1568个赞
知道小有建树答主
回答量:1703
采纳率:25%
帮助的人:759万
展开全部
能给你提供个思路自己写么?
用一个HashMap这个里面存的是数字和汉字的一对一关系,如1对应一
然后用一个数组对应的是汉字的单位如String[]tr = {"万","千","百","十"};
剩下的自己想想吧最核心的都告诉你了实现就是细节问题了
更多追问追答
追问
哥哥 给写多点呗 帮我写出来13099 -> 一万三千零九十九 这个就好了
追答
好吧等会
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuehangyu123
2011-08-24
知道答主
回答量:27
采纳率:0%
帮助的人:17.5万
展开全部
很复杂,可以给你个我的思路,if(x==1){System.out.print("一")}......判断出他是几位数决定万啊,千啊,什么的
更多追问追答
追问
如果说 10030 这个数  怎么得到1 这个数 用length 吗?
我会 if(x==1){System.out.print("一")}
if(x==2){System.out.print("二")}
if(x==3){System.out.print("三")}
if(x==4){System.out.print("四")}
if(x==5){System.out.print("五")}
就是不会得到 10030 这个 第一位 这样的。
追答
String s = String.valueOf( value); // 其中 value 为任意一种数字类型
然后就是取s的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式