无聊写个好玩的——阿拉伯数字变中文数字

来源:互联网 发布:mac能玩qq飞车吗 编辑:程序博客网 时间:2024/05/09 00:01
package demo;

public class Test {

//主方法

    public static void test(int d) {
//      String[] str = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
      String[] str = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
//      String ss[] = new String[] { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿" };
      String ss[] = new String[] { "", "十", "百", "千", "万", "十", "百", "千", "亿" };
      String s = String.valueOf(d);
//      System.out.println(s);
      StringBuffer sb = new StringBuffer();
      for (int i = 0; i < s.length(); i++) {
          String index = String.valueOf(s.charAt(i));
          sb = sb.append(str[Integer.parseInt(index)]);
      }
      String sss = String.valueOf(sb);
//      System.out.println(sss);
      char[] c = sss.toCharArray();
      int i = 0;
      String ch;
      for (int j = sss.length(); j > 0; j--) {
          ch = String.valueOf(c[j-1]);
          if(i==4){
              if(ch.equals("零")){
                  sb = sb.insert(j-1, ss[i++]);
              }else{
                  sb = sb.insert(j, ss[i++]);
              }
          }else if(ch.equals("零")){
              i++;
          }else{
              sb = sb.insert(j, ss[i++]);
          }
      }
      sss = String.valueOf(sb);
      sss = test2(sss);
      sss = test3(sss);
      sss = test4(sss);
      System.out.println(sss);
      
  }

 

//处理多个0的方法

  private static String test2(String str){
      if(str.indexOf("零零")>0){
          StringBuilder sb = new StringBuilder(str);
          sb.replace(str.indexOf("零零"), str.indexOf("零零")+1, "");
          str = sb.toString();
          return test2(str);
      }
          return str;

  }

//当出现"零万"的时候变成“万”

  private static String test3(String str){
      if(str.indexOf("零万")>0){
          StringBuilder sb = new StringBuilder(str);
          sb.replace(str.indexOf("零万"), str.indexOf("零万")+1, "");
          str = sb.toString();
          return test2(str);
      }
      return str;
  }
//当出现"零万"的时候变成“万”
  private static String test4(String str){
      String str2 = str.substring(str.length()-1);
      if(str2.equals("零")){
          return str.substring(0,str.length()-1);
      }
      return str;
  }
  public static void main(String[] args) {
      test(100100);
//      test(999999999);
//      test(111000);
  }

}


最后只留了一个可以预见到的BUG 比如说十万 但是结果是一十万 

十一 的结果是一十一

这个一十不可以类似于零万更改成万 因为我们的习惯是如果他是开头或者开头是0的时候才只读十 前面的数需要再判断一下才行


0 0
原创粉丝点击