UPPERANDLOWERBOUND

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int item = sc.nextInt();

	System.out.println(lowerbound(arr, item));
	System.out.println(upperbound(arr, item));
}

public static int lowerbound(int[] arr, int data) {
	int lo = 0;
	int hi = arr.length - 1;
	int ans = -1;

	while (lo <= hi) {
		int mid = ((lo + hi) / 2);
		if (arr[mid] == data) {
			ans = mid;
			hi = mid - 1;
		} else if (data < arr[mid]) {
			hi = mid - 1;
		} else {
			lo = lo + 1;
		}
	}
	return ans;
}

public static int upperbound(int[] arr, int data) {
	int lo = 0;
	int hi = arr.length - 1;
	int ans = -1;

	while (lo <= hi) {
		int mid = ((lo + hi) / 2);
		if (arr[mid] == data) {
			ans = mid;
			lo = mid + 1;
		} else if (data < arr[mid]) {
			hi = mid - 1;
		} else {
			lo = mid + 1;
		}
	}
	return ans;
}

Getting exception. Please help me

Hey @amangaur078
Input Format

First line contains an integer n denoting the size of the array.
Second line contains n space separated integers denoting array elements.
Third line contains single integer Q denoting the no of queries.
Q lines follow , each containing a single integer x that is to be searched in the array.
correct code :

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int Q = sc.nextInt();
while (Q-- > 0) {
int item = sc.nextInt();

		System.out.print(lowerbound(arr, item)+" ");
		System.out.println(upperbound(arr, item));
	}
}

public static int lowerbound(int[] arr, int data) {
	int lo = 0;
	int hi = arr.length - 1;
	int ans = -1;

	while (lo <= hi) {
		int mid = ((lo + hi) / 2);
		if (arr[mid] == data) {
			ans = mid;
			hi = mid - 1;
		} else if (data < arr[mid]) {
			hi = mid - 1;
		} else {
			lo = lo + 1;
		}
	}
	return ans;
}

public static int upperbound(int[] arr, int data) {
	int lo = 0;
	int hi = arr.length - 1;
	int ans = -1;

	while (lo <= hi) {
		int mid = ((lo + hi) / 2);
		if (arr[mid] == data) {
			ans = mid;
			lo = mid + 1;
		} else if (data < arr[mid]) {
			hi = mid - 1;
		} else {
			lo = mid + 1;
		}
	}
	return ans;
}

}

okay thank you…!!!