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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑强强 中级黑马   /  2012-4-7 00:10  /  2103 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//逐步提升优化3


        public static void toHex_4(int num)
        {

                //定义一个临时容器。
                char[] arr=new char[8];//字符数组的默认初始化值'\u0000'代表空字符
                int pos=arr.length-1;//定义一个指针,此时指向的是一个空位
                char[] chs={'0','1','2','3',
                            '4','5','6','7',
                                    '8','9','A','B',
                                        'C','D','E','F'};

                while(num!=0)
                {
                        int temp=num&15;
                        //System.out.println(chs[temp]);
                        arr[--pos]=chs[temp];
                       
                        num=num>>>4;
                }
                System.out.println("pos="+pos);

        //存储数组遍历
                for (int x=pos;x<=arr.length ; x++)
                {
                        System.out.print(arr[x]+",");
                }
       
        }

毕老师讲了一大堆已经迷糊了,这个数组和指针到底是什么样的关系呢??编译时我没有出错,为什么我会有以下结果呢??大湿们,求解啊

9.JPG (31.28 KB, 下载次数: 50)

9.JPG

6 个回复

倒序浏览
数组内存溢出

  //存储数组遍历
                 for (int x=pos;x<=arr.length ; x++)
                 {
                         System.out.print(arr[x]+",");     //这边可以去到arr[8],但是数组只有8个元素,只能取到arr[7]
                 }
回复 使用道具 举报
guojun_sun 发表于 2012-4-7 10:28
数组内存溢出

  //存储数组遍历

但是毕老师运行的过程好像没有出错啊
回复 使用道具 举报
那你在仔细看一看,你的代码,肯定有那边和毕老师写的不一样
回复 使用道具 举报
出现了角标越界异常。
int pos=arr.length-1;//定义一个指针,此时指向的是一个空位
改为
int pos=arr.length;//定义一个指针,此时指向的是一个空位


  for (int x=pos;x<=arr.length ; x++)
改为
   for (int x=pos;x<arr.length ; x++)
就o了
传一个60
结果为
pos = 6
3,C,
回复 使用道具 举报
朱鹏举 发表于 2012-4-7 13:26
出现了角标越界异常。
int pos=arr.length-1;//定义一个指针,此时指向的是一个空位
改为

非常感谢,这是我的疏忽了
回复 使用道具 举报
pray 高级黑马 2014-4-26 03:43:00
7#
让人阅毕击掌三叹的好帖
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马