A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a825105162 中级黑马   /  2016-5-21 08:59  /  767 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面是我自己写的代码,仅供参考
  1. import java.util.Scanner;

  2. public class Test10 {
  3.         private static Scanner sc;

  4.         public static void main(String[] args) {
  5.                 sc = new Scanner(System.in);
  6.                 // 0-12位的小数
  7.                 System.out.println("请输入要转换的数字(0-12位):");
  8.                 String str = sc.nextLine();
  9.                 // 将str转成long型然后对10000取余得到后四位
  10.                 long lo = Long.parseLong(str);
  11.                 long last = lo % 10000;
  12.                 // 同理可得中间四位以及前面四位
  13.                 long mid = lo / 10000 % 10000;
  14.                 long before = lo / 10000 / 10000 % 10000;
  15.                 // System.out.println(last + "\n" + mid + "\n" + before);
  16.                 // 调用方法得出结果
  17.                 System.out.println("转换后的结果为:" + method(before, mid, last));
  18.         }

  19.         // 可以得出最终结果的方法
  20.         public static String method(long before, long mid, long last) {
  21.                 // TODO Auto-generated method stub
  22.                 // 定义一个空字符串
  23.                 String result = "";
  24. //                System.out.println(before + "--" + mid + "--" + last);
  25.                 // 调用方法得出每一部分的中文输出
  26.                 String before1 = change(before);
  27.                 String mid1 = change(mid);
  28.                 String last1 = change(last);
  29.                 // 如果mid、before、last都为0
  30.                 if (before == 0 && mid == 0 && last == 0) {
  31.                         result = "零圆整";
  32.                 }
  33.                 // 判断如果mid小于等于4、last小于四位数且不为0,before为0
  34.                 else if (before == 0 && mid != 0 && last != 0 && String.valueOf(mid).length() <= 4
  35.                                 && String.valueOf(last).length() < 4) {
  36.                         result = mid1 + "万" + "零" + last1 + "圆整";
  37.                 }
  38.                 // 判断如果mid小于等于4、last等于四位数且不为0,before为0
  39.                 else if (before == 0 && mid != 0 && last != 0 && String.valueOf(mid).length() <= 4
  40.                                 && String.valueOf(last).length() == 4) {
  41.                         result = mid1 + "万" + last1 + "圆整";
  42.                 }
  43.                 // 判断如果before小于等于4且不为0、last小于等于四位数且不为0,mid为0
  44.                 else if (before != 0 && last != 0 && mid == 0 && String.valueOf(before).length() <= 4
  45.                                 && String.valueOf(last).length() <= 4) {
  46.                         result = before1 + "亿" + "零" + last1 + "圆整";
  47.                 }
  48.                 // 判断如果before小于等于4且不为0、mid小于四位数且不为0,last为0
  49.                 else if (before != 0 && last == 0 && mid != 0 && String.valueOf(before).length() <= 4
  50.                                 && String.valueOf(mid).length() < 4) {
  51.                         result = before1 + "亿" + "零" + mid + "万" + "圆整";
  52.                 }
  53.                 // 判断如果before小于等于4且不为0、mid等于四位数且不为0,last为0
  54.                 else if (before != 0 && last == 0 && mid != 0 && String.valueOf(before).length() <= 4
  55.                                 && String.valueOf(mid).length() == 4) {
  56.                         result = before1 + "亿"  + mid + "万" + "圆整";
  57.                 }
  58.                 // 如果mid小于等于四位数且不为0,last和before为0
  59.                 else if (String.valueOf(mid).length() <= 4 && mid != 0 && last == 0 && before == 0) {
  60.                         result = mid1 + "万" + "圆整";
  61.                 }
  62.                 // 如果before小于等于四位数且不为0,mid和last为0
  63.                 else if (String.valueOf(before).length() <= 4 && mid == 0 && last == 0 && before != 0) {
  64.                         result = before1 + "亿" + "圆整";
  65.                 }
  66.                 // 如果last小于等于四位数且不为0,mid和before为0
  67.                 else if (String.valueOf(last).length() <= 4 && mid == 0 && last != 0 && before == 0) {
  68.                         result = last1 + "圆整";
  69.                 }
  70.                 // 如果mid1不小于4位,last1小于四位
  71.                 else if (String.valueOf(mid).length() < 4) {
  72.                         result = before1 + "亿" + mid1 + "万" + "零" + last1 + "圆整";
  73.                 }
  74.                 // 否则都不添加零
  75.                 else {
  76.                         result = before1 + "亿" + mid1 + "万" + last1 + "圆整";
  77.                 }
  78.                 return result;
  79.         }

  80.         // 可以将不大于四位的数字汉字表达式输出的方法
  81.         public static String change(long num) {
  82.                 // TODO Auto-generated method stub
  83.                 // 将long型转换层字符串型
  84.                 String str = String.valueOf(num);
  85.                 // 定义一个空字符串
  86.                 String result = "";
  87.                 // 定义两个数组用来存放中文数字汉字和单位
  88.                 String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
  89.                 String[] unitArr = { "拾", "佰", "仟" };
  90.                 // 遍历
  91.                 for (int i = 0; i < str.length(); i++) {
  92.                         // 获取每一位的数字
  93.                         int numStr = str.charAt(i) - 48;
  94.                         // 如果不是最后一位数字且不是0则需要添加单位
  95.                         if (i != str.length() - 1 && numStr != 0) {
  96.                                 result += hanArr[numStr] + unitArr[str.length() - 2 - i];
  97.                         }
  98.                         // 如果这个数字为0则输出空
  99.                         else if (num == 0) {
  100.                                 result = "";
  101.                         }
  102.                         // 如果最后一个数字为零
  103.                         else if (i == str.length() - 1 && numStr == 0) {
  104.                                 result += "";
  105.                         }
  106.                         // 否则不添加单位
  107.                         else {
  108.                                 result += hanArr[numStr];
  109.                         }
  110.                 }
  111.                 // 遍历结果合并零
  112.                 if (result.contains("零零")) {
  113.                         result = result.replace("零零", "零");
  114.                 }
  115.                 return result;
  116.         }
  117. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马