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