What is wrong with this code Java DS binary-search

what is wrong with this code of binary search however it is same code for binary search which i learned in java crux online course.Please help it prints every time -1
public class Binary {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	int[] arr2= {2,8,454,5,89,465,464,15,546,79};
	int items=5;
	System.out.println(binarySearch(arr2, items));


}
public static int binarySearch(int[] arr, int item) {

	int lo = 0;
	int hi = arr.length - 1;
	


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

	}

	return -1;
}

}

The idea of binary search is to use the information that the array is sorted .
int[] arr2= {2,8,454,5,89,465,464,15,546,79}; is sorted ??

Binary Search: Search a sorted array by repeatedly dividing the search interval in half. Begin with an interval covering the whole array. If the value of the search key is less than the item in the middle of the interval, narrow the interval to the lower half. Otherwise narrow it to the upper half. Repeatedly check until the value is found or the interval is empty.

Algo

We basically ignore half of the elements just after one comparison.

  1. Compare item with the middle element.
  2. If item matches with middle element, we return the mid index.
  3. Else If item is greater than the mid element, then item can only lie in right half subarray after the mid element. So we search for right half.
  4. Else (item is smaller) search for the left half.