黑马程序员技术交流社区

标题: 大家帮忙看看查表法这段代码哪里错了 [打印本页]

作者: 千殇一梦    时间: 2015-3-4 16:56
标题: 大家帮忙看看查表法这段代码哪里错了
本帖最后由 千殇一梦 于 2015-3-4 17:01 编辑

看到毕老师关于查表法这一块,把进制转换封装成方法。我代码都和毕老师一样,为什么输出的结果是错的。
把6转换成二进制。我这段代码输出了111 正确的是110.大家帮忙看看。我实在是看不出来了。
  1. class ConvertBest
  2. {
  3.      public static void trans(int num,int base,int offset)
  4.     {
  5.         if(num==0)
  6.             return;
  7.         char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  8.         char[] arr=new char[32];
  9.         int pos=arr.length;
  10.         while(num!=0)
  11.         {
  12.             int temp=num&base;
  13.            arr[--pos]=chs[temp];
  14.            num=num>>>offset;
  15.         }
  16.         for(int x=pos;x<arr.length;x++)
  17.         {
  18.             System.out.print(arr[pos]);
  19.         }
  20.     }
  21.         //转二进制
  22.     public static void toBin(int num)
  23.     {
  24.         trans(num,1,1);
  25.     }
  26.         //转十六进制
  27.     public static void toHex(int num)
  28.     {
  29.         trans(num,15,4);
  30.     }

  31.     public static void main(String[] args)
  32.     {
  33.         toBin(6);
复制代码


晕,最后面有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