What is wrong in this code?

import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner scn=new Scanner(System.in);

	int n=scn.nextInt();
	int [] arr=new int[n];
	for (int i=0;i<n;i++) {
		arr[i]=scn.nextInt();
		
	}
	int [] ans=Mergesort(arr,0,arr.length-1);
	for(int val : ans) {
		System.out.println(val);
	}

}
public static int[] Mergetwosortedarrays(int [] arr1,int[] arr2) {
	int [] merged=new int[arr1.length+arr2.length];
	
	int i=0;
	int j=0;
	int k=0;
	
	while(i<arr1.length && j<arr2.length) {
		if (arr1[i]<arr2[j]) {
			merged[k]=arr1[i];
			i++;
			k++;
		}
		else {
			merged[k]=arr2[j];
			j++;
			k++;
		}
		if (i==arr1.length) {
			while (j<arr2.length) {
				merged[k]=arr2[j];
				j++;
				k++;
			}
		}
		if (j==arr2.length) {
			while (i<arr1.length) {
				merged[k]=arr1[i];
				i++;
				k++;
			}
		}
		
	}
	return merged;

	
}
public static int[] Mergesort(int [] arr,int lo,int hi) {
	if (lo==hi) {
		int [] br=new int[1];
		br[0]=arr[lo];
		return br;
	}
	int mid=(lo+hi)/2;
	
	int [] fh=Mergesort(arr,lo,mid);
	int [] sh=Mergesort(arr,mid+1,hi);
	
	int [] merged=Mergetwosortedarrays(fh,sh);
	return merged;
}

}

Hey @harsh.hj
Just a change in merge two sorted Array

import java.util.*;

public class Main {
public static void main(String args[]) {
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scn.nextInt();
}
int[] ans = Mergesort(arr, 0, arr.length - 1);
for (int val : ans) {
System.out.print(val);
}
}

public static int[] Mergetwosortedarrays(int[] arr1, int[] arr2) {
	int[] merged = new int[arr1.length + arr2.length];
	int i = 0;
	int j = 0;
	int k = 0;
	while (i < arr1.length && j < arr2.length) {
		if (arr1[i] < arr2[j]) {
			merged[k] = arr1[i];
			i++;
			k++;
		} else {
			merged[k] = arr2[j];
			j++;
			k++;
		}
	}

/// out side the while loop
if (i == arr1.length) {
while (j < arr2.length) {
merged[k] = arr2[j];
j++;
k++;
}
}
if (j == arr2.length) {
while (i < arr1.length) {
merged[k] = arr1[i];
i++;
k++;
}
}

	return merged;
}

public static int[] Mergesort(int[] arr, int lo, int hi) {
	if (lo == hi) {
		int[] br = new int[1];
		br[0] = arr[lo];
		return br;
	}
	int mid = (lo + hi) / 2;
	int[] fh = Mergesort(arr, lo, mid);
	int[] sh = Mergesort(arr, mid + 1, hi);
	int[] merged = Mergetwosortedarrays(fh, sh);
	return merged;
}

}