The following code; import java.io.File; import java.util.*; public class BinarySearch { public static int search(int key, int[] a) { return search(key, a, 0, a.length); } public static int search(int key, int[] a, int lo, int hi) { if (hi <= lo) return -(hi-1); int mid = lo + (hi - lo) / 2; int cmp = a[mid]-key; if (cmp > 0) return search(key, a, lo, mid); else if (cmp < 0) return search(key, a, mid + 1, hi); else{ if (a[mid+1]==key) return search(key,a,mid+1,hi); else{ return mid; } } } public static void main(String[] args) { String name= args[0]; int count=0; try{ Scanner scanner = new Scanner(new File(name)); while(scanner.hasNextInt()) { scanner.nextInt(); count++; } } catch(Exception e){} int a[] = new int[count]; int in=0; try{ Scanner scanner1 = new Scanner(new File(name)); while(scanner1.hasNextInt()) a[in++]=scanner1.nextInt(); } catch(Exception e){} System.out.println(search(Integer.parseInt(args[1]),a)); } } Do not know how to correct the error; Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at BinarySearch.main(BinarySearch.java:38) Any suggestion would help, Thanks
The following code;
import java.io.File; import java.util.*; public class BinarySearch { public static int search(int key, int[] a) { return search(key, a, 0, a.length); } public static int search(int key, int[] a, int lo, int hi) { if (hi <= lo) return -(hi-1); int mid = lo + (hi - lo) / 2; int cmp = a[mid]-key; if (cmp > 0) return search(key, a, lo, mid); else if (cmp < 0) return search(key, a, mid + 1, hi); else{ if (a[mid+1]==key) return search(key,a,mid+1,hi); else{ return mid; } } } public static void main(String[] args) { String name= args[0]; int count=0; try{ Scanner scanner = new Scanner(new File(name)); while(scanner.hasNextInt()) { scanner.nextInt(); count++; } } catch(Exception e){} int a[] = new int[count]; int in=0; try{ Scanner scanner1 = new Scanner(new File(name)); while(scanner1.hasNextInt()) a[in++]=scanner1.nextInt(); } catch(Exception e){} System.out.println(search(Integer.parseInt(args[1]),a)); } }
Do not know how to correct the error; Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0 at BinarySearch.main(BinarySearch.java:38) Any suggestion would help, Thanks
No hand written and fast answer with explanation
Step by step
Solved in 2 steps