Von Neuman Loves Binary

Code for the question is
import java.util.Scanner;

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

public static void main(String[] args) {
	int n = scn.nextInt();
	int[] array = takeInputs(n);
	int[] UpArray = BinaryToDecimal(array, n);
	Display(UpArray);
}

public static int[] BinaryToDecimal(int[] arr, int n) {
	int p = 1;
	int[] ans = new int[n];

	for (int i = 0; i < arr.length; i++) {
		while (arr[i] > 0) {
			int r = arr[i] % 10;
			ans[i] = ans[i] + r * p;
			p = p * 2;
			arr[i] = arr[i] / 10;
		}
	}

	return ans;
}

public static int[] takeInputs(int n) {

	int[] arr = new int[n];
	for (int i = 0; i < arr.length; i++) {
		arr[i] = scn.nextInt();
	}
	return arr;
}

public static void Display(int[] arr) {
	for (int i = 0; i < arr.length; i++) {
		System.out.println(arr[i]);
	}
}

}
Can you suggest what changes should I make to make it work.

Hey @Autri
Just a change
Binary toDecimal fun
initialize p inside the for loop
correct code:

import java.util.Scanner;

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

public static void main(String[] args) {
	int n = scn.nextInt();
	int[] array = takeInputs(n);
	int[] UpArray = BinaryToDecimal(array, n);
	Display(UpArray);
}

public static int[] BinaryToDecimal(int[] arr, int n) {

	int[] ans = new int[n];
for (int i = 0; i < arr.length; i++) {

int p = 1;
while (arr[i] > 0) {
int r = arr[i] % 10;
ans[i] = ans[i] + r * p;
p = p * 2;
arr[i] = arr[i] / 10;
}
}
return ans;
}

public static int[] takeInputs(int n) {
	int[] arr = new int[n];
	for (int i = 0; i < arr.length; i++) {
		arr[i] = scn.nextInt();
	}
	return arr;
}

public static void Display(int[] arr) {
	for (int i = 0; i < arr.length; i++) {
		System.out.println(arr[i]);
	}
}

}