You have a few errors, you cannot create an int array without size. Instead, I used a list of arrays.
static Integer[] factorsOf(int val) { List<Integer> numArray = new ArrayList<Integer>(); System.out.println("\nThe factors of " + val + " are:"); for (int i = 2; i <= Math.ceil(Math.sqrt(val)); i++) { if (val % i == 0) { numArray.add(i); val /= i; System.out.print(i + ", "); } } numArray.add(val); System.out.print(val); return numArray.toArray(new Integer[numArray.size()]); }
A complete program using int [] as per your request.
public class Test2 { public static void main(String[] args) { int val = 5; int [] result = factorsOf(val); System.out.println("\nThe factors of " + val + " are:"); for(int i = 0; i < result.length && result[i] != 0; i ++){ System.out.println(result[i] + " "); } } static int[] factorsOf(int val) { int limit = (int) Math.ceil(Math.sqrt(val)); int [] numArray = new int[limit]; int index = 0; for (int i = 1; i <= limit; i++) { if (val % i == 0) { numArray[index++] = i; val /= i; } } numArray[index] = val; return numArray; } }
source share