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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-1-16 11:01 编辑

public static void get(int num)
        {
                char[] arr={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'} ;
                char[] arr1=new char[8];
                for(int a=0;a<8;a++)
                {
                        if(num!=0)
                        {
                        int temp=num & 15;
                        arr1[a]=arr[temp];
                        num=num>>>4;
                        }
                }
                for(int a=arr1.length-1;a>=0;a--)
                {
                        if(arr1[a]!=0)
                        System.out.print(arr1[a]);
                }
        }
}


我这代码想起来比较简单,除了for循环里无效的多判断了几次,还有别的缺点嘛?能这样写吗? 求指教..

评分

参与人数 1技术分 +1 收起 理由
金鑫 + 1

查看全部评分

2 个回复

倒序浏览
越底层越效率
回复 使用道具 举报
本帖最后由 陈丽莉 于 2013-1-16 18:25 编辑

      可能是StringBuffer看着有点晕所以想重写吧。说说StringBuffer在这个题中的优点:1、它是长度可以改变的容器,更加节省空间;2、有自带的反转功能
      如果想用字符数组替代的话,楼主的代码有两个地方有待改进:
     1、数组中存的几个字母应该大写:char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'} ;
     2、第一个for可以改进一下,减少后续的判断次数:

    for(int a=0;a<8;a++)
     {
                 if(!num)
                  break;
                  int temp=num & 15;
                  arr1[a]=arr[temp];
                  num=num>>>4;
      }

评分

参与人数 1技术分 +1 收起 理由
金鑫 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马