下面这段代码method方法参数不能带0,带0输出就乱了,求高手解决呀!0怎么处理呀!没分了
public class Convert {
public void method(String num){
  
  String[] arrUnit = {"元","十","百","千","万"}; // 计量单位
  String[] arrNum  = {"零","一","二","三","四","五","六","七","八","九"}; //大写数字
  String[] strNum = num.split("|");
  int nNumCount = strNum.length - 2;
//  String newStr = "";
  for(int i=0; i<strNum.length; i++){
   if(strNum[i] != null && !"".equals(strNum[i])){
    int n = Integer.parseInt(strNum[i]);
    switch(n){
     case 0 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 1 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 2 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 3 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 4 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 5 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 6 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 7 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 8 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
     case 9 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
    }
   }
  }
 }
 public static void main(String args[])
 {
  new Convert().method("1111");
 }
}逻辑

解决方案 »

  1.   

    你这代码有其他问题吧 case 0:
    //System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]);
    nNumCount--;
    System.out.print(arrNum[n]);
    break;
      

  2.   


    这业务挺复杂的,用现成的吧import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.List;public class MoneyToChinese { private static String[] digit = { "", "拾", "佰", "仟", "万", "拾万", "佰万", "仟万", "亿", "拾亿", "佰亿", "仟亿", "万亿" }; private static final String FEN = "分"; private static final String JIAO = "角"; private static final String YUAN = "圆"; private static final String ZHENG = "整"; public static void main(String[] args) { System.out.println(getMoneyString(1004));
    } /**www.2cto.com
     * 取得数字对应的中文
     * 
     * @param money
     * @return
     */
    public static String getMoneyString(double money) {
    // 将字符串转为为BigDecimal格式 
    BigDecimal b = new BigDecimal(String.valueOf(money));
    // 设置精度为2,小数点后2位 
    String strMoney = "" + b.setScale(2, BigDecimal.ROUND_UNNECESSARY);
    // 按小数点分为 整数 和 小数 两部分 
    String[] amt = strMoney.split("\\.");
    // 调用函数获取 元 和 小数 部分的字符串 
    strMoney = getYuan(amt[0]) + YUAN + getJIAOFEN(amt[1]);
    // 返回最终得到的字符串 
    return strMoney;
    } /**
     * 得到元的部分
     * 
     * @param s
     * @return
     */
    public static String getYuan(String s) {
    char[] c = s.toCharArray();
    StringBuffer chSb = new StringBuffer();
    int len = c.length;
    List<String> list = new ArrayList<String>();
    String d = "";
    for (int i = 0; i < c.length; i++) {
    // 如果有几个0挨在一起时, 只显示一个零即可 
    if (i > 0 && c[i] == '0' && c[i] == c[i - 1]) {
    --len;
    continue;
    }
    // 得到数字对应的中文 
    chSb.append(getChinese(c[i])); // 非零时, 显示是几佰, 还是几仟 
    if (!getChinese(c[i]).equals("零")) {
    d = digit[--len];
    list.add(d);// 当数字中有万和十万时, 要去掉十万 
    chSb.append(d);
    } else {
    --len; // 如果是0则不取位数 
    }
    }
    String chStr = chSb.toString();
    // 如果同时包含有万和十万, 则将十万中的万去掉 
    if (list.contains("万") && list.contains("拾万")) {
    chStr = chStr.replaceAll("拾万", "拾");
    }
    if (list.contains("万") && list.contains("佰万")) {
    chStr = chStr.replaceAll("佰万", "佰");
    }
    if (list.contains("万") && list.contains("仟万")) {
    chStr = chStr.replaceAll("仟万", "仟");
    }
    // 如果同时包含亿和十亿, 则将十亿中的亿字去掉 
    if (list.contains("亿") && list.contains("拾亿")) {
    chStr = chStr.replaceAll("拾亿", "拾");
    }
    if (list.contains("亿") && list.contains("佰亿")) {
    chStr = chStr.replaceAll("佰亿", "佰");
    }
    if (list.contains("亿") && list.contains("仟亿")) {
    chStr = chStr.replaceAll("仟亿", "仟");
    }
    if (list.contains("亿") && list.contains("万亿")) {
    chStr = chStr.replaceAll("万亿", "万");
    }
    // 如果最后一位是 0, 则去掉 
    if ((chSb.charAt(chSb.length() - 1)) == '零') {
    chStr = chStr.substring(0, chStr.length() - 1);
    }
    return chStr;
    } /**
     * 分角转换为字符串  
     *     例: 25 2角5分   
     *         02 零2分   
     *         50 5角
     *         00  整
     *         0   整
     *         2   整
     * @param FENJIAO
     * @return
     */
    private static String getJIAOFEN(String FENJIAO) {
    // 分角字符串转为为字符数组 
    char[] ch = FENJIAO.toCharArray();
    // 按长度为0,为1,为2 来区分。 
    if (ch.length == 0) {
    return ZHENG;
    } else if (ch.length == 1) {
    if (ch[0] == '0') {
    return ZHENG;
    } else {
    return getChinese(ch[0]) + JIAO;
    }
    } else {
    if (ch[0] == '0' && ch[1] == '0') {
    return ZHENG;
    } else if (ch[0] == '0' && ch[1] != '0') {
    return getChinese(ch[0]) + getChinese(ch[1]) + FEN;
    } else if (ch[0] != '0' && ch[1] == '0') {
    return getChinese(ch[0]) + JIAO;
    } else {
    return getChinese(ch[0]) + JIAO + getChinese(ch[1]) + FEN;
    }
    }
    } /**
     * 取得数字对应的中文
     * @param i
     * @return
     */
    private static String getChinese(char i) {
    String ch = "";
    switch (i) {
    case '0':
    ch = "零";
    break;
    case '1':
    ch = "壹";
    break;
    case '2':
    ch = "贰";
    break;
    case '3':
    ch = "叁";
    break;
    case '4':
    ch = "肆";
    break;
    case '5':
    ch = "伍";
    break;
    case '6':
    ch = "陆";
    break;
    case '7':
    ch = "柒";
    break;
    case '8':
    ch = "捌";
    break;
    case '9':
    ch = "玖";
    break;
    }
    return ch;
    }}
      

  3.   

    public class Convert {
    public void method(String num){  String[] arrUnit = {"元","十","百","千","万"}; // 计量单位
      String[] arrNum  = {"零","一","二","三","四","五","六","七","八","九"}; //大写数字
      num = String.valueOf(Integer.parseInt(num));
      String[] strNum = num.split("|");
      int nNumCount = strNum.length - 2;
    //  String newStr = "";
      for(int i=0; i<strNum.length; i++){
       if(strNum[i] != null && !"".equals(strNum[i])){
        int n = Integer.parseInt(strNum[i]);
        switch(n){
         case 0 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 1 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 2 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 3 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 4 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 5 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 6 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 7 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 8 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
         case 9 : System.out.print(arrNum[n] + "" + arrUnit[nNumCount--]); break;
        }
       }
      }
     }
     public static void main(String args[])
     {
      new Convert().method("0001111");
     }
    }
      

  4.   

    这段程序如果要考虑严格的话,需要判断输入的num是否为合法的数字类型。暂时先不管这个校验
    把你的程序稍微修改了下,不过结果倒是可以满足public void method(String num) { String[] arrUnit = { "元", "十", "百", "千", "万" }; // 计量单位
    String[] arrNum = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; // 大写数字
    String[] strNum = num.split("|");
    int nNumCount = strNum.length - 2;
    //System.out.println("nNumCount:" + nNumCount);
    StringBuilder newStr = new StringBuilder();

    for (int i = 0; i < strNum.length; i++) {
    if (strNum[i] != null && !"".equals(strNum[i])) {
    int n = Integer.parseInt(strNum[i]);
    //System.out.println("nNumCount:" + nNumCount + "n:" + n);
    switch (n) {
    case 0:
    if (!num.matches("[1-9]\\d*0$") || i != strNum.length -1) {
    newStr.append(arrNum[n]);
    }

    if (i == (strNum.length-1)) {
    newStr.append(arrUnit[nNumCount]);
    }
    nNumCount--;
    break;
    case 1:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 2:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 3:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 4:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 5:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 6:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 7:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 8:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    case 9:
    newStr.append(arrNum[n] + "" + arrUnit[nNumCount--]);
    break;
    }
    }
    }

    String result = newStr.toString().replaceAll("零{2,3}", "零").replaceAll("零元", "元");
    System.out.println(result);
    }