失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java 阿拉伯数字书写的金额 转换为中文形式 初步结果 不知有无bug

java 阿拉伯数字书写的金额 转换为中文形式 初步结果 不知有无bug

时间:2022-03-22 00:11:48

相关推荐

java 阿拉伯数字书写的金额 转换为中文形式  初步结果 不知有无bug

import java.util.Scanner;public class Exp4_6 {static String[] A = { "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟"};//一次性写完 世上总有简单和谐的算法static String[] B = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };static String changeZ(String s) {//整数部分转换String ans="";for (int i = 0; i < s.length(); i++) {int n = s.charAt(i) - '0';if(s.length() - i - 1==0) {//i=s.length() - i 最后一位 个位ans=ans+(B[n]+"");//确实是0 即个位 当然不能是亿了}else {ans=ans+(B[n] + A[(s.length() - i - 1)%8]);}}ans=ans+"圆";//replaceAll都替换 replace替换第一次找到的//去多余的零ans = ans.replaceAll("零[拾佰仟]","零").replaceAll("零+亿","亿").replaceAll("零{4}万", "").replaceAll("零+万","万").replaceAll("零+圆","圆").replaceAll("零+", "零").replaceAll("零壹拾", "零拾");//最后为拾的省略if(ans.equals("壹拾圆"))//暴力解决 比较大小千万别用==return "拾圆";return ans;}static String changeX(String s) {//小数部分转换String ans="";if (s.equals("0")||s.equals("00")) {// 小数位全为0 不能用==return "整";}if (s.length() == 2) {ans=ans+(B[s.charAt(0) - '0'] + "角");ans=ans+(B[s.charAt(1) - '0'] + "分");} else {ans=ans+(B[s.charAt(0) - '0'] + "角");}ans=ans.replaceAll("零角", "零").replaceAll("零分", "");return ans;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();String[] S = str.split("\\.");if (S.length == 1) {//没有小数点System.out.println(changeZ(S[0])+"整");} else {System.out.println(changeZ(S[0])+changeX(S[1]));}sc.close();}}

如果觉得《java 阿拉伯数字书写的金额 转换为中文形式 初步结果 不知有无bug》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。