You should prefer calculating digits recursively;
Sample Code
package com.levo.so.digits;
public class DigitDisplay {
    public static void main(String[] args) {
        int number = 2118;
        System.out.println("Number : " + number);
        System.out.println();
        int[] digits = getDigitArray(number);
        System.out.println("Digits;");
        System.out.println("-------");
        for(int i = 0; i < digits.length; i++) {
            System.out.printf("Digit [%d]: %d\n", i, digits[i]);
        }
        System.out.println("\n");
        System.out.println("Components");
        System.out.println("----------");
        for(int i = 0; i < digits.length; i++) {
            System.out.printf("[%d]: %d\n", i, digits[i]*(int)Math.pow(10, i));
        }
    }
    private static int[] getDigitArray(int number) {
        int[] array = new int[getDigitCount(number)];
        int index = 0;
        while(number != 0) {
            array[index++] = (number%10);
            number /= 10;
        }
        return array;
    }
    private static int getDigitCount(int number) {
        int digitCount = 0;
        while(number != 0) {
            number /= 10;
            digitCount++;
        }
        return digitCount;
    }
}
Output
Number : 2118
Digits;
-------
Digit [0]: 8
Digit [1]: 1
Digit [2]: 1
Digit [3]: 2
Components
----------
[0]: 8
[1]: 10
[2]: 100
[3]: 2000