很easy的问题,写个给你,哪个公司要出这样的题目,也不要去了,没多大意思~public class Reader {  private String strNum;
  private String strNumChFormat;
  private String strNumTemp;
  private int intNumLen;
  private String strBegin;  public Reader(String strNum) {
    this.strNum = strNum;
  }  public boolean check(String strNum) {
    boolean valid = false;
    
    if (strNum.substring(0,1).equals("0")){
     this.strNum = strNum.substring(1);
    }    try {
      new Double(strNum);
      valid = true;
    }
    catch (NumberFormatException ex) {
      System.out.println("Bad number format!");
    }
    return valid;  }  public void init() {
    strNumChFormat = "";
    intNumLen = strNum.length();
    strNumTemp = strNum;    strNumTemp = strNumTemp.replace('1', '一');
    strNumTemp = strNumTemp.replace('2', '二');
    strNumTemp = strNumTemp.replace('3', '三');
    strNumTemp = strNumTemp.replace('4', '四');
    strNumTemp = strNumTemp.replace('5', '五');
    strNumTemp = strNumTemp.replace('6', '六');
    strNumTemp = strNumTemp.replace('7', '七');
    strNumTemp = strNumTemp.replace('8', '八');
    strNumTemp = strNumTemp.replace('9', '九');
    strNumTemp = strNumTemp.replace('0', '零');
    strNumTemp = strNumTemp.replace('.', '点');    strBegin = strNumTemp.substring(0, 1);
  }  public String readNum() {    if (check(strNum)) {      init();      try {
        for (int i = 1, j = 1, k = 1; i < intNumLen; i++) {          if (strNumTemp.charAt(intNumLen - 1) == '零' && i == 1) {
            strNumChFormat = "位";
          }
          else if (strNumTemp.charAt(intNumLen - i) == '零' && j == 1) {
            strNumChFormat = "位" + strNumChFormat;
          }
          else if (strNumTemp.charAt(intNumLen - i) == '点') {
            j = 1;
            k = 1;
            strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
            continue;
          }
          else {
            strNumChFormat = strNumTemp.charAt(intNumLen - i) + strNumChFormat;
          }          if (strNumTemp.charAt(intNumLen - i - 1) != '位' &&
              strNumTemp.charAt(intNumLen - i - 1) != '零') {
            if (j == 1 && i < intNumLen) {
              strNumChFormat = '拾' + strNumChFormat;
            }
            else if (j == 2 && i < intNumLen) {
              strNumChFormat = '百' + strNumChFormat;
            }
            else if (j == 3 && i < intNumLen) {
              strNumChFormat = '千' + strNumChFormat;
            }
          }
          if (j == 4 && i < intNumLen) {
            j = 0;
          }
          if (k == 4 && i < intNumLen) {
            strNumChFormat = '万' + strNumChFormat;
          }
          else if (k == 8 && i < intNumLen) {
            k = 0;
            strNumChFormat = '亿' + strNumChFormat;
          }
          j++;
          k++;
        }        while (strNumChFormat.indexOf("位") != -1) {
          strNumChFormat = strNumChFormat.replaceAll("位", " ");
        }        if (strNumChFormat.substring(0, 2) == "一拾") {
          strNumChFormat = strNumChFormat.substring(1, strNumChFormat.length());
        }        if (strNumChFormat.indexOf("点") >= 0) {
          String rebegin = strNumChFormat.substring(0,
              strNumChFormat.indexOf("点"));
          String relast = strNumChFormat.substring(strNumChFormat.indexOf("点"),
              strNumChFormat.length());
          for (int i = 1; i <= relast.length(); i++) {
            relast = relast.replaceAll("拾", "");
            relast = relast.replaceAll("百", "");
            relast = relast.replaceAll("千", "");
            relast = relast.replaceAll("万", "");
            relast = relast.replaceAll("亿", "");
          }
          strNumChFormat = rebegin + relast;
        }      }
      catch (ArrayIndexOutOfBoundsException ex) {
        ex.printStackTrace();
      }
      catch (Exception ex) {
        ex.printStackTrace();
      }      int off = strNumChFormat.indexOf("点");
      strNumChFormat = strBegin + strNumChFormat.substring(0);
    }
    else {
      strNumChFormat = "";
    }
    return strNumChFormat;  }  public static void main(String args[]) {
    try {
      String number = args[0].toString();
      System.out.println("The number is: " + number);
      Reader reader = new Reader(number);
      System.out.println("Output String: " + reader.readNum());
    }
    catch (Exception ex) {
      System.out.println("Please input like that: javac Reader <number>");    }  }}

解决方案 »

  1.   

    哈哈,这种题目也拿出来笔试呀?就是一个replace呀。晕!
      

  2.   

    to 回复人: laffee19(laffee) ( ) 信誉:100 按工资算,写这么长的代码,也改赚300块钱了
      

  3.   

    laffee19(laffee) ( )
    不错!
      

  4.   

    不是每个应聘者都能像laffee19(laffee)一样,随笔写出这样的代码;
    不错;
      

  5.   

    http://www.qq166.com/vip.htm?QQ=855965
      

  6.   

    回复人: laffee19(laffee) ( ) 信誉:100  很easy的问题,写个给你,哪个公司要出这样的题目,也不要去了,没多大意思~============================
    真是高手,看问题的角度不同了。
    不过也的确是厉害。
      

  7.   

    laffee19(laffee):
    你的代码太长了,我没耐心看。
    不过我觉得题目也不难
      

  8.   

    呵呵,当我从键盘中输入一个数字的时候,编译通过,执行却报了几个错误,但是结果还是对的.如果输入的是一个0,就看不到结果了,请楼上写这个代码的指点!
    PS:错误是  java.lang.StringIndexOutOfBoundsException: String index out of range:
            at java.lang.String.substring(String.java:1477)
            at Reader.readNum(Reader.java:106)
            at Reader.main(Reader.java:148)
      

  9.   

    I think you had better start from ".",if indexOf(".") == -1 then replace from right to left.
    not so difficulty as you write ,may be change to  a better one