java初学 算法第四版二分算法里的一个问题

Mysterious_Cool 2017-10-07 02:27:25
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.In;
import java.util.Arrays;
public class 二分 {
public static int rank(int key,int[] a)
{
int lo=0;
int hi=a.length-1;
while(lo<=hi)
{
int mid=lo+(hi-lo)/2;
if(key<a[mid]) hi=mid-1;
else if(key>a[mid]) lo=mid+1;
else return mid;
}
return -1;
}
public static void main(String[] args){
int[] whitelist=In.readInts(args[0]);
Arrays.sort(whitelist);//注:只有当数组有序时才能进行二分查找
while(!StdIn.isEmpty())
{
int key=StdIn.readInt();
if(rank(key,whitelist)<0)
StdOut.println(key);
}
}
}
报错Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
int[] whitelist=In.readInts(args[0]); 应该是这句有问题吧 怎么改呢 查了好久了
...全文
360 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
偏安zzcoder 2017-10-09
  • 打赏
  • 举报
回复
楼主是不是用Eclipse写代码然后运行的,因为Eclipse中默认运行方式是不加参数的,也就是说默认args这个数组是长度为0的(但不等于null)。建议楼主使用命令行输入javac 二分 然后再java 二分 [参数] 。 具体示例:

javac 二分.java
java 二分 1 2 3 4 5 6

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧