[Java] 把数字转换成人民币大写的形式 →→→→→进入此内容的聊天室

来自 , 2020-12-24, 写在 Java, 查看 136 次.
URL http://www.code666.cn/view/ca9c267d
  1. /**
  2.  * @author sunpander
  3.  * time: 08-12-11 19:16
  4.  * 把输入的数字转换成人民币大写的形式
  5.  */
  6.  
  7. import java.io.BufferedReader;
  8. import java.io.InputStreamReader;
  9.  
  10. public class ChangeNumToRMB {
  11.  
  12.         String moneyStrs[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
  13.  
  14.         public static void main(String[] args) {
  15.                 // TODO Auto-generated method stub
  16.                 boolean isDebug = true;
  17.                 while (isDebug) {
  18.                         int num = 0;
  19.                         String changedStr = "";
  20.                         System.out.println("请输入需要转换的金额:");
  21.                         BufferedReader br = new BufferedReader(new InputStreamReader(
  22.                                         System.in));
  23.                         boolean isWrongInput = true;
  24.                         while (isWrongInput) {
  25.                                 try {
  26.                                         String str = br.readLine();
  27.  
  28.                                         num = Integer.parseInt(str);
  29.  
  30.                                 } catch (Exception e) {
  31.                                         System.out.println("输入数字有误,必须是:0" + "到" + Integer.MAX_VALUE
  32.                                                         + " 的整数");
  33.  
  34.                                         // TODO Auto-generated catch block
  35.                                         // e.printStackTrace();
  36.                                         isWrongInput = true;
  37.                                         continue;
  38.                                 }
  39.                                 isWrongInput = false;
  40.                         }
  41.                         ChangeNumToRMB chan = new ChangeNumToRMB();
  42.                         changedStr = chan.getChangedString(num);
  43.                 }
  44.         }
  45.  
  46.         public String getChangedString(int num) {
  47.  
  48.                 // Money用于存放输入的金额数
  49.                 int moneyNum = num;
  50.                 String moneyStr = "";
  51.                 System.out.println("输入的钱数是:");
  52.                 if (moneyNum < 0) {
  53.                         System.out.println("数字必须大于零");
  54.                 } else if (moneyNum == 0) {
  55.                         moneyStr = "零元";
  56.                 }
  57.                 // 只有四位数,即最大9999.小于10000
  58.                 else if (moneyNum < 10000) {
  59.                         moneyStr = this.getFourNumStr(moneyNum) + "元";
  60.                 }
  61.                 // 大于一万,小于一千万
  62.                 else if (moneyNum <= 10000000)// && moneyNum>10000)
  63.                 {
  64.  
  65.                         int firstFourNum, lastFourNum;
  66.                         firstFourNum = moneyNum / 10000;
  67.                         lastFourNum = moneyNum % 10000;
  68.                         String firstFourStr = this.getFourNumStr(firstFourNum);
  69.                         String lastFourStr = this.getFourNumStr(lastFourNum);
  70.                         if (!lastFourStr.contains("仟"))
  71.                                 lastFourStr = "零" + lastFourStr;
  72.                         moneyStr = firstFourStr + "万" + lastFourStr + "元";
  73.                 }
  74.                 // 大于一千万.即上亿但小于最大整数
  75.                 else if (moneyNum < Integer.MAX_VALUE)// && moneyNum>10000000)
  76.                 {
  77.                         int firstFourNum, secondFourNum, lastFourNum;
  78.                         firstFourNum = moneyNum / 100000000;
  79.                         secondFourNum = (moneyNum / 10000) % 1000;
  80.                         lastFourNum = moneyNum % 10000;
  81.                         String firstFourStr = this.getFourNumStr(firstFourNum);
  82.                         String secondFourStr = this.getFourNumStr(secondFourNum);
  83.                         String lastFourStr = this.getFourNumStr(lastFourNum);
  84.                         if (!lastFourStr.contains("仟"))
  85.                                 lastFourStr = "零" + lastFourStr;
  86.                         if (!secondFourStr.contains("仟"))
  87.                                 secondFourStr = "零" + secondFourStr;
  88.                         moneyStr = firstFourStr + "亿" + secondFourStr + "万" + lastFourStr
  89.                                         + "元";
  90.                 } else
  91.                         System.out.println("someting    is wrong");
  92.                 System.out.println(moneyStr);
  93.                 return moneyStr;
  94.         }
  95.  
  96.         public String getFourNumStr(int fourNum) {
  97.                 int qian, bai, shi, ge;
  98.                 ge = fourNum % 10;
  99.                 shi = (fourNum % 100) / 10;
  100.                 bai = (fourNum % 1000) / 100;
  101.                 qian = fourNum / 1000;
  102.                 String strTemp = "";
  103.                 if (qian != 0) {
  104.  
  105.                         strTemp = strTemp.concat(moneyStrs[qian] + "仟");
  106.                         strTemp = strTemp.concat(moneyStrs[bai] + "佰");
  107.                         strTemp = strTemp.concat(moneyStrs[shi] + "什");
  108.                         strTemp = strTemp.concat(moneyStrs[ge]);
  109.  
  110.                         strTemp = strTemp.replace("零佰", "零");
  111.                         strTemp = strTemp.replace("零什", "零");
  112.                         strTemp = strTemp.replace("零零", "零");
  113.                         strTemp = strTemp.replace("零零", "零");
  114.  
  115.                         if (strTemp.endsWith("零"))
  116.                                 strTemp = strTemp.substring(0, strTemp.length() - 1);
  117.                 } else if (bai != 0) {
  118.                         strTemp = strTemp.concat(moneyStrs[bai] + "佰");
  119.                         strTemp = strTemp.concat(moneyStrs[shi] + "什");
  120.                         strTemp = strTemp.concat(moneyStrs[ge]);
  121.  
  122.                         strTemp = strTemp.replace("零什", "零");
  123.                         strTemp = strTemp.replace("零零", "零");
  124.  
  125.                         if (strTemp.endsWith("零"))
  126.                                 strTemp = strTemp.substring(0, strTemp.length() - 1);
  127.                 } else if (shi != 0) {
  128.  
  129.                         strTemp = strTemp.concat(moneyStrs[shi] + "什");
  130.                         strTemp = strTemp.concat(moneyStrs[ge]);
  131.  
  132.                         if (strTemp.endsWith("零"))
  133.                                 strTemp = strTemp.substring(0, strTemp.length() - 1);
  134.                 } else
  135.                         strTemp.concat(moneyStrs[ge]);
  136.                 return strTemp;
  137.         }
  138. }

回复 "把数字转换成人民币大写的形式"

这儿你可以回复上面这条便签

captcha