网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

看到一题华为面试题,数字转成人民币,写了个方法.

http://www.diybl.com/ 2007-12-6  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】

看到一题华为面试题,数字转成人民币,写了个方法.如: 12345转为一万二千三百四十五元.

1.注意特殊字符的处理

2.性能.  少用string的replace等方法,这种方法没有index,遍历string很费性能,应在一个循环中做,而不是多次循环.


public class NumberToMenoy {
 public static void main(String[] args) {
  NumberToMenoy t = new NumberToMenoy();
  long t1 = System.currentTimeMillis();
  String[] num = new String[5];
  num[0] = "1234567890";
  num[1] = "1000000000";
  num[2] = "1000500022";
  num[3] = "1000000000000000000";
  num[4] = "10000000000000";
  for(int j =0;j<10000;j++){
   for (int i = 0; i < num.length; i++) {
    t.conversion(num[i]);
   }
  }
  long t2 = System.currentTimeMillis() - t1 ;
  System.out.println("运算时间:"+t2);
 }

 public void conversion(String money){
  String[] cn = {"零","一","二","三","四","五","六","七","八","九"};
  String[] unit = {"十","百","千"};
  StringBuffer cnMoney = new StringBuffer();
  int m ;
  int b = 0;
  int le = money.length();
  for(int i = 0;i<le;i++){
   m = Integer.parseInt( money.substring(i,i+1) );
   b += m ;
   if( !(m == 0 && cnMoney.charAt(cnMoney.length()-1) == ''零'') ){
    cnMoney.append(cn[m]);
   }
   int j = (money.length()-i-1) % 4 ;
    if( j == 0 ){
     if (cnMoney.charAt(cnMoney.length() - 1) == ''零'') {
      cnMoney.deleteCharAt(cnMoney.length() - 1);
     }
     if( (money.length()-i-1)/4%2==0){
      cnMoney.append("亿");
     }else{
      if(b != 0){
       cnMoney.append("万");
      }
     }
     b = 0 ;
    }else{
     if(m != 0){
      cnMoney.append(unit[j-1]);
     }
    }
  }
  if(cnMoney.charAt(0)==''一'' && cnMoney.charAt(1)==''十''){
   cnMoney.deleteCharAt(0);
  }
  cnMoney.replace(cnMoney.length()-1, cnMoney.length(), "元");
  //System.out.println(money+"    "+cnMoney);
 }
 
}



欢迎光临DIY部落,点击这里查看更多文章教程   【点击打包该文章】
如果图片或页面不能正常显示请点击这里 站内搜索:   

文章评论

请您留言