黑马程序员技术交流社区

标题: 写代码遇到的问题 [打印本页]

作者: 秦超    时间: 2012-3-7 20:54
标题: 写代码遇到的问题
  1. public static void newTo16(int num)
  2.         {
  3.                   //定义一个数组,把十六进制的所有值列出来
  4.          char [] arr={1,2,3,4, 5,6,7,8, 9,'A','B','C', 'D','E','F'};       

  5.         //定义一个数组,用于存放得到的十六进制值
  6.         char [] res=new char [8];

  7.         //只要这个数不等于0,就可以进入循环         
  8.         int i=res.length;                 //用于循环
  9.         while(num!=0)
  10.         {       
  11.                   int temp = num & 15;        //得到最低4位的十六进制值
  12.           res[--i]=arr[temp];                //把得到的十六进制数对应的值放入res数组中的最后一位
  13.           num>>>=4;                //右移4位
  14.         }
  15.         //遍历输出
  16.         for(int x=i; x<res.length;x++)
  17.         {
  18.             System.out.print(res[x]);       
  19.         }
  20. }
复制代码
这个方法在main中调用了,但是说出的结果很无语啊!我真不知道哪里有问题了~~麻烦帮帮忙找找!
作者: 秦超    时间: 2012-3-7 21:00
找到一个错误,就是char数组中的元素没有加'',总是会出现一些无语的小问题,但是我传进方法的参数是60,得到的答案却是4D,这是为什么啊?
作者: 杨毅    时间: 2012-3-7 21:17
秦超 发表于 2012-3-7 21:00
找到一个错误,就是char数组中的元素没有加'',总是会出现一些无语的小问题,但是我传进方法的参数是60,得到的 ...

因为表制错了,你的表里12角标对应的字母是D,3角标对应的是4,在字符数组前面加个‘0’就可以了
作者: 秦超    时间: 2012-3-7 21:22
杨毅 发表于 2012-3-7 21:17
因为表制错了,你的表里12角标对应的字母是D,3角标对应的是4,在字符数组前面加个‘0’就可以了 ...

悲剧了~~忘了是从0开是的~
这种错误真的很无语唉`~谢谢楼上了!!!!!!
作者: 泮和顺    时间: 2012-3-7 21:36
char [] arr={1,2,3,4, 5,6,7,8, 9,'A','B','C', 'D','E','F'};        
出来数字单引号问题..少定义了个0




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