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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马吕世成 中级黑马   /  2012-11-13 17:16  /  1331 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      工作比较坑爹,不能及时的来上传答案。比较尴尬。。。不过在这里感觉还是有必要贴出来,就我感觉我的代码代码量量比较小,这里跟大家分享下思想。


/**
  @author: lsc
  @time  : 2012.11.12
  
  功能:实现将数字1234.56以壹仟两百三十四块五角六分的形式输出。
  实现:1.将数字变成String类型,然后返回其长度。
     2.将String对象变成char数组。同时创建一个数组按顺序存放仟、佰等单位。
     3.用for循环同时遍历两个数组并将两个数组组合到一起输出。
     
  如果学习了hashtable之后可以用哈希表实现,将会更加简单。
  
*/

class Change
{
  public static void main(String[] args)
  {
    String[] st1 = {"万","仟","佰","十","元","角","分"};
    String[] st2 = new String[10] ;
    //用来标识是否上一个数是否是零,如果是则这次不需要输出。因为中间不管出现多少个零我们只要读一个。
    boolean tag = true ;
    double f = 10005.56;
    int i = (int)(f*100) ;
   // System.out.println(i);
    String s = Integer.toString(i);
    int len = s.length();
    char[] c = s.toCharArray() ;
   
    for(int x = 0; x < len; x ++)
    {
     //将数字转换成我们要的大写。
     switch(c[x])
      {
       case'0' :  st2[x] = "零" ;  break;
       case'1' :  st2[x] = "壹" ;  break;
       case'2' :  st2[x] = "贰" ;  break;
       case'3' :   st2[x] = "叁" ;  break;
       case'4' :   st2[x] = "肆" ;  break;
       case'5' :   st2[x] = "伍" ;  break;
       case'6' :   st2[x] = "陆" ;  break;
       case'7' :   st2[x] = "柒" ;  break;
       case'8' :   st2[x] = "捌" ;  break;
       case'9' :   st2[x] = "玖" ;  break;
      }
   
   
    //输出,要判断是否连续出现零,如果出现只输出一个。
    if(c[x] != '0')
    {
      System.out.print(st2[x]+st1[x]);
      tag = true ;
    }
    if (c[x] == '0'&&tag)
    {
      System.out.print(st2[x]);
      tag = false ;
    }
    }
    System.out.println();
  }
}


以上就是代码,欢迎各位拍砖。



评分

参与人数 1技术分 +1 收起 理由
杨千里 + 1 赞一个!

查看全部评分

0 个回复

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