黑马程序员技术交流社区

标题: 来找错吧 纠结了我半小时~~终于发现问题了 [打印本页]

作者: Imp_x    时间: 2014-8-20 23:58
标题: 来找错吧 纠结了我半小时~~终于发现问题了
  1. class JinZhi
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 toHex(60);
  6.         }
  7.         public static void toHex(int num)
  8.         {
  9.                 char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  10.                 char[] arr = new char[8];              
  11.                 int js=0;
  12.                 while(num!=0)
  13.                 {
  14.                         arr[js] = chs[num&15];
  15.                         num=num>>>4;
  16.                         js++;
  17.                 }
  18.                 for (int x=js;x>=0 ;x--)
  19.                 {
  20.                         System.out.print((char)arr[x]);
  21.                 }
  22.         }
  23. }
复制代码



作者: 马嘉    时间: 2014-8-21 07:09
我也是初学者,

14.                        arr[js] = chs[num&15];

15.                        num=num>>>4;
这两是什么意思呀,我不太明白
作者: 潘多拉    时间: 2014-8-21 08:52
求十六进制的问题?把num的后四位作为chs的下标来求出十六进制赋给数组,不知道是要干嘛,如果要利用数组,就应该num&15以后跟chs中的数比较,如果相同就存入arr,这样也许就行了
作者: Imp_x    时间: 2014-8-21 09:37
马嘉 发表于 2014-8-21 07:09
我也是初学者,

14.                        arr[js] = chs[num&15];

就是把num&15后的这个数作为chs的角标去查表所得的数据  存进去数字arr[js]里
作者: 冒牌高手    时间: 2014-8-22 07:49
18行的  int x=js-1;
作者: 叶飞翔    时间: 2014-8-22 10:09
冒牌高手 发表于 2014-8-22 07:49
18行的  int x=js-1;

对,就是这个问题。因为循环将要结束的时候,js又自增了,但是这个下标的字符不存在。
作者: 十指紧扣    时间: 2014-8-22 11:57
加油!………………………………




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