-3

I am getting the following error:

error: non-static method binarySearch(int[],int,int,int) cannot be referenced from a static context System.out.println(binarySearch(arr,0,n-1,val));

class BinarySearch {

    int binarySearch(int arr[], int i, int len, int val) {
        if (len >= 1) {
            int mid = i + (len - 1) / 2;
            if (arr[mid] == val)
                return mid;
            if (arr[mid] > val)
                return binarySearch(arr, i, mid - 1, val);

            return binarySearch(arr, mid + 1, len, val);
        }
        return -1;
    }

    public static void main(String args[]) {

        int arr[] = {1, 5, 7, 9, 55, 67};
        int val = 7;
        int n = arr.length;
        System.out.println(binarySearch(arr, 0, n - 1, val));
    }
}
Juan Carlos Mendoza
  • 5,736
  • 7
  • 25
  • 50
Ashwin Athrey
  • 55
  • 1
  • 9

1 Answers1

1

Make your binarySearch method as static

or split it into separate objects, like this:

public class Main {
    public static void main(String args[]) {
        int arr[] = {1, 5, 7, 9, 55, 67};
        int val = 7;
        int n = arr.length;
        System.out.println(new BinarySearch().binarySearch(arr, 0, n - 1, val));
    }
}

class BinarySearch {
    int binarySearch(int arr[], int i, int len, int val) {
        if (len >= 1) {
            int mid = i + (len - 1) / 2;
            if (arr[mid] == val)
                return mid;
            if (arr[mid] > val)
                return binarySearch(arr, i, mid - 1, val);

            return binarySearch(arr, mid + 1, len, val);
        }
        return -1;
    }
}
Yaroslav
  • 446
  • 4
  • 15