黑马程序员技术交流社区

标题: 进制转换 [打印本页]

作者: 代文娟    时间: 2013-8-17 09:57
标题: 进制转换
十进制转换成十六进制
class ArrayText6
{
        public static void main(String[] args)
        {
                toHex(60);
        }
public static void toHex(int num)        {                char[]arr={'0','1','2','3', '4','5','6','7','8','9','A','B', 'C','D','E','F'};                char[]arr1=new char[8];      while(num!=0)      {     int i=0;                  int temp=num&15;                        arr1[i++]=arr[temp];                  num=num>>>4;      }            for (int i=0;i<arr1.length;i++ )          {                  System.out.print(arr1[i]+',');          }}}为什么我运行完之后是这样的结果9544444444444444



作者: 昝文萌    时间: 2013-8-17 10:28
我发现你代码里有个错误。
  1. while(num!=0)
  2. {
  3.        int i=0;//这里有错误每次循环i都被初始化为0,当然不对了
  4.        int temp=num&15;
  5.        arr1[i++]=arr[temp];
  6.        num>>>4;
  7. }      
复制代码

作者: 薛鹏鹏    时间: 2013-8-17 10:32
代码请放进代码框里,如图,排版整齐便于阅读。

下面是正确的代码,指针应该放到循环体外面
  1. public static void toHex(int num)
  2.                 {
  3.                         char[] chs = {'0','1','2','3',
  4.                                                         '4','5','6','7',
  5.                                                                 '8','9','a','b',
  6.                                                                         'c','d','e','f'};
  7.                        
  8.                         char[] arr = new char[8];
  9.                         int pos = arr.length;//指针
  10.                         while(num!=0)
  11.                         {
  12.                                 int temp = num & 15;
  13.                                
  14.                                 arr[--pos] =chs [temp];
  15.                                 num = num >>>4;


  16.                         }
  17.                         for(int x=pos;x<arr.length;x++)
  18.                         {
  19.                                 System.out.print(arr[x]);
  20.                         }

  21.                 }
复制代码

QQ图片20130817102920.jpg (3.49 KB, 下载次数: 45)

QQ图片20130817102920.jpg

作者: 代文娟    时间: 2013-8-17 10:46
薛鹏鹏 发表于 2013-8-17 10:32
代码请放进代码框里,如图,排版整齐便于阅读。

下面是正确的代码,指针应该放到循环体外面 ...

谢了,谢了
作者: 心灵之歌    时间: 2013-8-17 10:57
public static void main(String[] args){
                toHex(60);
        }

        public static void toHex(int num){
                char[] arr={'0','1','2','3', '4','5','6','7','8','9','A','B', 'C','D','E','F'};
                char[] arr1=new char[8];
                int j=0;//这样子试试
                while(num!=0){
                       
                        int temp=num&15;
                        arr1[j++]=arr[temp];
                        num=num>>>4;
                }
                for (int i=0;i<arr1.length;i++ ){
                                System.out.print(arr1[i]+',');
                }
        }       
       




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