黑马程序员技术交流社区

标题: 自己想到的代码和毕老师4天10节的进制转换对比 [打印本页]

作者: 芦青    时间: 2013-1-15 17:26
标题: 自己想到的代码和毕老师4天10节的进制转换对比
本帖最后由 张向辉 于 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循环里无效的多判断了几次,还有别的缺点嘛?能这样写吗? 求指教..
作者: 王少雷    时间: 2013-1-15 18:22
越底层越效率
作者: 陈丽莉    时间: 2013-1-15 18:44
本帖最后由 陈丽莉 于 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;
      }





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2