Я начинаю в java и беру курс Алгоритм, который предоставляется Принстоном. Я следую пример книги: BinarySearch в странице 9.Ошибка Java: Исключение из потока «main» java.lang.ArrayIndexOutOfBoundsException
import edu.princeton.cs.algs4.*;
import java.util.Arrays;
public class BinarySearch
{
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)
{
In in = new In(args[0]);
int[] whitelist = in.readAllInts();
Arrays.sort(whitelist);
while (!StdIn.isEmpty())
{
int key = StdIn.readInt();
if (BinarySearch.rank(key, whitelist) == -1)
StdOut.println(key);
}
}
Однако, когда я скомпилировать файл, консоль напоминает мне, что
NPP_EXEC: "java_Compile_Run"
NPP_SAVE: G:\java\binarysearch\BinarySearch.java
javac -encoding UTF-8 "G:\java\binarysearch\BinarySearch.java"
Process started >>>
<<< Process finished. (Exit code 0)
==========编译成功后开始运行==========
java -cp "G:\java\binarysearch;D:\Program Files\java\jdk\lib\algs4.jar" "BinarySearch"
Process started >>>
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at BinarySearch.main(BinarySearch.java:22)
<<< Process finished. (Exit code 1)
================ READY ================
Я не знаю, что это
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at BinarySearch.main(BinarySearch.java:22)
Нет ошибки в программе, я думаю. Любые советы полезны. Спасибо.
В какой строке у вас есть ошибка – Abdelhak
Вы спрашиваете, что такое исключение индекса массива из пределов? Или вы спрашиваете, что это такое? Или оба? Кроме того, @Abdelhak ошибка в строке 22 –
@Abdelhak Он может генерировать класс java. Поэтому я думаю, что нет ошибки в каждой строке ... – gaoxinge