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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张建峰 初级黑马   /  2012-6-20 13:08  /  1485 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张建峰 于 2012-6-20 13:20 编辑

在学习基础时遇到了一个小问题,看几遍找不到原因,请高手们指点一下,毕老师基础视频的第四天10
  1. class ArrayTest6
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 toHex(60);
  6.         }

  7.         /*
  8.         查表法:将所有的元素临时存储起来,建立对应关系
  9.         每一次&15后的值作为索引去查建立好的表,就可以找对应的元素

  10.         表通过数组的形式来定义
  11.         可以通过数组来做容器完成储存
  12.         */
  13.         public static void toHex(int num)
  14.         {
  15.                 char [] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  16.                
  17.                 //定义一个临时容器
  18.                 char[]arr=new char [8];
  19.                 int pos=arr.length-1;
  20.                 while (num!=0)//for (int x=0;x<8 ;x++ )
  21.                 {
  22.                         int temp=num &15;
  23.                         //System.out.println(chs[temp]);
  24.                         arr [--pos]=chs [temp];
  25.                         num =num >>> 4;
  26.                 }
  27.                 System.out.println("pos="+pos);//打印pos的值
  28.                 //存储数据的arr数组遍历
  29.                 for (int x=pos;x<arr.length ;x++ )
  30.                 {
  31.                         System.out.print(arr[x]+",");
  32.                 }
  33.         }
  34. }
复制代码
我运行的结果是:
而毕老师运行的是:pos=6
                  3,c,
可是我找不到代码哪一点不同,请教一下

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
本帖最后由 唐辉辉 于 2012-6-20 13:17 编辑

楼主仔细对比下老师的代码可以找到:
int pos=arr.length-1;
老师的代码没有 -1
本来arr中就有16个元素,你减掉一个,就只有15个元素。导致后面的程序出错。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
唐辉辉 发表于 2012-6-20 13:16
楼主仔细对比下老师的代码可以找到:
int pos=arr.length-1;
老师的代码没有 -1

谢谢,还是不够细心啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马