黑马程序员技术交流社区
标题:
自己想到的代码和毕老师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