What is wrong in this code?

package arrays;

import java.util.Scanner;

public class targetsumpairs {
static Scanner scn=new Scanner(System.in);

public static void main(String[] args) {
	
	int n=scn.nextInt();
	int [] arr=new int[n];
	for (int i=0;i<n;i++) {
		arr[i]=scn.nextInt();
	}
	
	sort(arr);
	Search(arr);
	
}
public static void sort(int [] arr ) {
	for (int counter=0;counter<arr.length-1;counter++) {
		int min=counter ;
		for (int j=counter+1;j<arr.length-1;j++) {
			if(arr[j]<arr[min]) {
				min=j;
			}
		}
		int temp=arr[min];
		arr[min]=arr[counter];
		arr[counter]=temp;
	}
	
	
	
	
}
public static void Search(int [] arr ) {
	
	int lo=0;
	int hi=arr.length;
	int j=lo+hi;
	int target=scn.nextInt();
	while(lo<=hi) {
		if (j>target) {
			hi=hi-1;
			if (j==target) {
				System.out.println(lo +"and"+hi);
			}
		}
		else if (j<target) {
			lo=lo+1;
			if (j==target) {
				System.out.println(lo +"and"+hi);
			}
		}
	}
	
	
}

}

@harsh.hj lemme review bro!

kya hua bro is it right or wrong???

@harsh.hj bro is condition ka koi fayda? j > target and then checking j == target?

unreachable condition hai ye, agar equal hua bhi to inme se kisi bhi condition mein ni jaega or tumhara code infinite loop mein chala jaega! Ya code is incorrect.

Simple two pointer approach hai, simple code, refer my code below and dry run it!


Atleast dry run ya code for samples so that you can get what the problem is!