java 人民币转换_把数字转换成人民币大写的形式Java类详解

/**

* @author sunpander

* 把输入的数字转换成人民币大写的形式

*/

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class ChangeNumToRMB {

String moneyStrs[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };

public static void main(String[] args) {

// TODO Auto-generated method stub

boolean isDebug = true;

while (isDebug) {

int num = 0;

String changedStr = "";

System.out.println("请输入需要转换的金额:");

BufferedReader br = new BufferedReader(new InputStreamReader(

System.in));

boolean isWrongInput = true;

while (isWrongInput) {

try {

String str = br.readLine();

num = Integer.parseInt(str);

} catch (Exception e) {

System.out.println("输入数字有误,必须是:0" + "到" + Integer.MAX_VALUE

+ " 的整数");

// TODO Auto-generated catch block

// e.printStackTrace();

isWrongInput = true;

continue;

}

isWrongInput = false;

}

ChangeNumToRMB chan = new ChangeNumToRMB();

changedStr = chan.getChangedString(num);

}

}

public String getChangedString(int num) {

// Money用于存放输入的金额数

int moneyNum = num;

String moneyStr = "";

System.out.println("输入的钱数是:");

if (moneyNum < 0) {

System.out.println("数字必须大于零");

} else if (moneyNum == 0) {

moneyStr = "零元";

}

// 只有四位数,即最大9999.小于10000

else if (moneyNum < 10000) {

moneyStr = this.getFourNumStr(moneyNum) + "元";

}

// 大于一万,小于一千万

else if (moneyNum <= 10000000)// && moneyNum>10000)

{

int firstFourNum, lastFourNum;

firstFourNum = moneyNum / 10000;

lastFourNum = moneyNum % 10000;

String firstFourStr = this.getFourNumStr(firstFourNum);

String lastFourStr = this.getFourNumStr(lastFourNum);

if (!lastFourStr.contains("仟"))

lastFourStr = "零" + lastFourStr;

moneyStr = firstFourStr + "万" + lastFourStr + "元";

}

// 大于一千万.即上亿但小于最大整数

else if (moneyNum < Integer.MAX_VALUE)// && moneyNum>10000000)

{

int firstFourNum, secondFourNum, lastFourNum;

firstFourNum = moneyNum / 100000000;

secondFourNum = (moneyNum / 10000) % 1000;

lastFourNum = moneyNum % 10000;

String firstFourStr = this.getFourNumStr(firstFourNum);

String secondFourStr = this.getFourNumStr(secondFourNum);

String lastFourStr = this.getFourNumStr(lastFourNum);

if (!lastFourStr.contains("仟"))

lastFourStr = "零" + lastFourStr;

if (!secondFourStr.contains("仟"))

secondFourStr = "零" + secondFourStr;

moneyStr = firstFourStr + "亿" + secondFourStr + "万" + lastFourStr

+ "元";

} else

System.out.println("someting is wrong");

System.out.println(moneyStr);

return moneyStr;

}

public String getFourNumStr(int fourNum) {

int qian, bai, shi, ge;

ge = fourNum % 10;

shi = (fourNum % 100) / 10;

bai = (fourNum % 1000) / 100;

qian = fourNum / 1000;

String strTemp = "";

if (qian != 0) {

strTemp = strTemp.concat(moneyStrs[qian] + "仟");

strTemp = strTemp.concat(moneyStrs[bai] + "佰");

strTemp = strTemp.concat(moneyStrs[shi] + "什");

strTemp = strTemp.concat(moneyStrs[ge]);

strTemp = strTemp.replace("零佰", "零");

strTemp = strTemp.replace("零什", "零");

strTemp = strTemp.replace("零零", "零");

strTemp = strTemp.replace("零零", "零");

if (strTemp.endsWith("零"))

strTemp = strTemp.substring(0, strTemp.length() - 1);

} else if (bai != 0) {

strTemp = strTemp.concat(moneyStrs[bai] + "佰");

strTemp = strTemp.concat(moneyStrs[shi] + "什");

strTemp = strTemp.concat(moneyStrs[ge]);

strTemp = strTemp.replace("零什", "零");

strTemp = strTemp.replace("零零", "零");

if (strTemp.endsWith("零"))

strTemp = strTemp.substring(0, strTemp.length() - 1);

} else if (shi != 0) {

strTemp = strTemp.concat(moneyStrs[shi] + "什");

strTemp = strTemp.concat(moneyStrs[ge]);

if (strTemp.endsWith("零"))

strTemp = strTemp.substring(0, strTemp.length() - 1);

} else

strTemp.concat(moneyStrs[ge]);

return strTemp;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值