考考眼力,找下代码的bug
来源:互联网 发布:拆分盘软件开发 编辑:程序博客网 时间:2024/04/27 15:06
这个bug够隐蔽的。
public class BinarySearch ...{
public static int binarySearch(int[] a, int key) ...{
int low = 0;
int high = a.length - 1;
while (low <= high) ...{
int mid = (low + high) / 2;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
}
public static int binarySearch(int[] a, int key) ...{
int low = 0;
int high = a.length - 1;
while (low <= high) ...{
int mid = (low + high) / 2;
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
}
错误就在:
int mid = (low + high) / 2;
这行的问题是当low和high的和超过2^31-1, 也就是Java里最大整数值时,整数溢出就发生了,而mid就变成负数了, 于是JVM就抓狂了,于是ArrayIndexOutOfBoundsException就发生了。
解决方法是把它改成:int mid = low + ((high - low) / 2);
- 考考眼力,找下代码的bug
- 【HTML5游戏开发】简单的《找不同汉字版》,来考考你的眼力吧
- [HTML5游戏开发]简单的《找不同汉字版》,来考考你的眼力吧
- 错觉图:考考你的眼力
- 考考你的眼力 又一张神奇的图片
- 今天调试的一个bug,如果你懂c语言,不妨进来锻炼下眼力哦
- 记录下找BUG的方法
- 找bug的体会
- 找bug的感悟
- 找Bug的历程
- [HTML5游戏开发]简单的《找没有同汉字版〗爆去考考您狄综力吧
- 考验一下你的眼力!
- 不是bug的bug,从svn下的”错误“代码。
- 本周看代码找bug总结
- 用Beyond Compare如何找代码bug
- 找了三天的BUG
- 如何找更多的bug
- 找bug的小技巧
- C#农历
- cool cool music~ mod音乐分享
- ASP.NET TreeView级联选择问题
- 开发环境中biztalk项目设置注意事项
- 小弟来逛逛
- 考考眼力,找下代码的bug
- How to discard the default animation when AP launched
- biztalk 2006 产品的版本以及适配器相关信息
- 热烈庆祝国庆的到来!
- 批处理文件删除自己
- 关于Db.Search效率方面的几点心得
- biztalk中使用.net class类型的消息(一) -- 相关知识介绍
- DB2存储过程开发最佳实践
- SQL优化原则