Это можно сделать намного проще, используя List, так как добавить элемент в массив непросто.Прочтите комментарии в приведенном ниже коде, чтобы увидеть, как это работает
public static void main(String args[]) throws Exception {
int arr[] = {20,11,100,9,3,200,4000};
int[][] sortedArray = new int[50][]; // fixing the size to 50 so we can go up to 50 digits, that could also be dynamic but it would make the code heavier
int nbDigits;
int[] tmpArray;
for(int i : arr) {
// get the number of digits
nbDigits = nbDigits(i);
// retrieve the array to add the integer to
tmpArray = sortedArray[nbDigits-1];
// add the integer to the array
tmpArray = addToArray(tmpArray, i);
// stick back your array in the multidimensional array
sortedArray[nbDigits-1] = tmpArray;
}
}
Этот метод добавляет элемент в указанный массив.
private static int[] addToArray(int[] array, int n) {
int[] returnArray;
if(array == null) {
returnArray = new int[1];
returnArray[0] = n;
} else {
// copy the array in an other array 1 bigger
returnArray = Arrays.copyOf(array, array.length + 1);
// add your number at the end
returnArray[array.length] = n;
}
return returnArray;
}
Этот метод вычисляет количество цифр целого числа, делая его строкой и возвращая его длину
private static int nbDigits(int n) {
return String.valueOf(n).length();
}