黑马程序员技术交流社区
标题:
关于查表法进制互转的一个问题
[打印本页]
作者:
michaelzzz
时间:
2014-5-10 13:45
标题:
关于查表法进制互转的一个问题
本帖最后由 michaelzzz 于 2014-5-10 17:17 编辑
public static void fangfa(int num,int yude,int yide)
{
if(num==0)
{
System.out.println(0);
return ;
}
char[] biao={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char[] arr=new char[32];
int pos =arr.length;
while(num!=0)
{
int temp=num & yude;
arr[--pos]=biao[temp];
num=num>>>yide;
}
for(
int x=pos
;x<arr.length;x++)
{
System.out.print(arr[x]);
}
}
这是毕向东java基础第四天的视频中的内容,图中红色部分,POS指针的初始化值为数组的长度,而在for循环中遍历数组时,角标x的初始化值也为POS,照理讲,角标的最大值应为arr.length-1,为什么运行时不报错呢,如果改为int POS=arr.length-1;反而会提示数组角标溢出,请问为什么?
作者:
蓝雨星空
时间:
2014-5-12 08:54
arr[--pos]=biao[temp];
这句代码,pos是先自减再存储arr,在arr存储时,它的第一个元素其实是存储在length-1的角标中的,所以不会出现角标越界。
当数组中的元素存满时,arr[--pos]中的最后一个元素是存储在0角标中的,如果设置 int pos=arr.length-1,当pos=0时, --pos就是 -1 这时再存储元素就会出现角标越界的情况。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2