Java人民币小写转大写字符串的实现

网友投稿 299 2023-01-21

Java人民币小写转大写字符串的实现

写了一个人民币小写转大写的方法,java版本,思路很简单,没有测出什么Bug,有bug欢迎反馈

public class RMBChange {

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

// 单位还可以往上

private static String[] unit = {"元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"};

// 小数位如还有需求可以直接往这个数组里加,

private static String[] countNum = {"角", "分"};

public static String change(String money) {

// 过滤空

if (money == null || "".equals(money)) {

return "";

}

StringBuilder res = new StringBuilder();

String[] splitStr = money.split("\\.");

if (splitStr.length > 2) {

throw new RuntimeException("输入的参数不是数字!");

}

String front = splitStr[0];

// 用于判定0的显示

boolean isZero = true;

if (front.length() > unit.length) {

throw new RuntimeException("输入的参数大于万亿!");

}

for (int i = 0; i < front.length(); i+fZCGlhF+) {

// 整数位处理

int dw = front.length() - i - 1;

// 用ASCII码获得数字

int index = (front.charAt(i) - '0');

if (index == 0) {

isZero = true;

if (dw == 0 || dw == 4 || dw == 8) {

// 元,万,亿需要拼接

res.append(unit[dw]);

}

} else {

if (isZero && i != 0) {

// 多个0只显示一个

res.append(nums[0]);

}

isZero = false;

res.append(nums[index]);

res.append(unit[dw]);

}

}

// 判断是否有小数位

if (splitStr.length > 1) {

// 小数位处理,如果不需要则直接删除这个if及内部所有内容

isZero = true;

String back = splitStr[1];

if (back.length() > countNum.length) {

throw new RuntimeException("小数位小于【" + countNum[countNum.length - 1] + "】!");

}

for (int i = 0; i < back.length(); i++) {

int index = (back.charAt(i) - '0');

if (index == 0) {

isZero = true;

} else {

if (isZero && i != 0) {

res.append(nums[0]);

}

isZero = false;

res.append(nums[index]);

res.append(countNum[i]);

}

}

}

return res.toString();

}

}

测试数据

public static void main(String[] args) {

System.out.println(change("9999999999999.99")); // 玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分

System.out.println(change("5020055606500.00")); // 伍万零贰佰亿零伍仟伍佰陆拾万零陆仟伍佰元

System.out.println(change("4001500050.16")); // 肆拾亿零壹佰伍拾万零伍拾元壹角陆分

System.out.println(change("7854416")); // 柒佰捌拾伍万肆仟肆佰壹拾陆元

System.out.println(change("9556")); // 玖仟伍佰伍拾陆元

System.out.println(change("10086.0")); // 壹万零捌拾陆元

System.out.println(change("263341.26")); // 贰拾陆万叁仟叁佰肆拾壹元贰角陆分

System.out.println(change("3651.06")); // 叁仟陆佰伍拾壹元零陆分

System.out.println(change("1.00")); // 壹元

System.out.println(change("300.00")); // 叁佰元

System.out.println(change("2007.01")); // 贰仟零柒元零壹分

}

输出结果

玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分

伍万零贰佰亿零伍仟伍佰陆拾万零陆仟伍佰元

肆拾亿零壹佰伍拾万零伍拾元壹角陆分

柒佰捌拾伍万肆仟肆佰壹拾陆元

玖仟伍佰伍拾陆元

壹万零捌拾陆元

贰拾陆万叁仟叁佰肆拾壹元贰角陆分

叁仟陆佰伍拾壹元零陆分

壹元

叁佰元

贰仟零柒元零壹分

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:免费API提取(免费代理api接口提取)
下一篇:Java进阶知识之反射的概念与获取方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~