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

2025-05-29 0 25

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70
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++) {

// 整数位处理

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();

}

}

测试数据

?

1

2

3

4

5

6

7

8

9

10

11

12

13
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")); // 贰仟零柒元零壹分

}

输出结果

玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分
伍万零贰佰亿零伍仟伍佰陆拾万零陆仟伍佰元
肆拾亿零壹佰伍拾万零伍拾元壹角陆分
柒佰捌拾伍万肆仟肆佰壹拾陆元
玖仟伍佰伍拾陆元
壹万零捌拾陆元
贰拾陆万叁仟叁佰肆拾壹元贰角陆分
叁仟陆佰伍拾壹元零陆分
壹元
叁佰元
贰仟零柒元零壹分

到此这篇关于Java人民币小写转大写字符串的实现的文章就介绍到这了,更多相关Java人民币小写转大写字符串内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/qq_39579105/article/details/115761313

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java人民币小写转大写字符串的实现 https://www.kuaiidc.com/108277.html

相关文章

发表评论
暂无评论