黑马程序员技术交流社区
标题:
大家帮忙看看查表法这段代码哪里错了
[打印本页]
作者:
千殇一梦
时间:
2015-3-4 16:56
标题:
大家帮忙看看查表法这段代码哪里错了
本帖最后由 千殇一梦 于 2015-3-4 17:01 编辑
看到毕老师关于查表法这一块,把进制转换封装成方法。我代码都和毕老师一样,为什么输出的结果是错的。
把6转换成二进制。我这段代码输出了111 正确的是110.大家帮忙看看。我实在是看不出来了。
class ConvertBest
{
public static void trans(int num,int base,int offset)
{
if(num==0)
return;
char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0)
{
int temp=num&base;
arr[--pos]=chs[temp];
num=num>>>offset;
}
for(int x=pos;x<arr.length;x++)
{
System.out.print(arr[pos]);
}
}
//转二进制
public static void toBin(int num)
{
trans(num,1,1);
}
//转十六进制
public static void toHex(int num)
{
trans(num,15,4);
}
public static void main(String[] args)
{
toBin(6);
复制代码
QQ图片20150304165554.png
(833 Bytes, 下载次数: 3)
下载附件
2015-3-4 16:56 上传
晕,最后面有2个}}没显示出来。那个33是60转16进制的
作者:
z47057554
时间:
2015-3-5 09:56
原因找到了,第18行,arr[pos]改为arr[x],因为你循环上自增的是 x ,pos没变,所以输出的都是arr[pos]上的1
作者:
千殇一梦
时间:
2015-3-5 12:32
嗯。多谢z47057554大兄弟了
作者:
林吉前
时间:
2015-3-8 00:26
:L看着好晕,果然代码还是自己敲最好
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2