# How do I make a program that counts the occurrence of each individual digit between 1 and 100?

I’m making a program that counts how many times each digit (0-9) occurs in each number between 1 to 100. At the end it will say something like:

``````The digit 0 showed up ____ times between 1-100
The digit 1 showed up ____ times between 1-100
``````

and so forth.

This is what I have:

``````public class CountEachDigit {

public static void main(String[] args) {

int counter =0;

int[] digit = new int;

for (int i=1;i<=100;i++) {

for (int j=0;j<=9;j++){

try{
String a = String.valueOf(i);
String b = String.valueOf(j);
if (b.equals(a.charAt(0)))
counter++;
digit[j]=counter;
} catch (Exception e){
continue;
}

try{
String a = String.valueOf(i);
String b = String.valueOf(j);
if (b.equals(a.charAt(1)))
counter++;
digit[j]=counter;
} catch (Exception e){
continue;
}

try{
String a = String.valueOf(i);
String b = String.valueOf(j);
if (b.equals(a.charAt(2)))
counter++;
digit[j]=counter;
} catch (Exception e){
continue;
}

}
}

for (int j =0;j<=9;j++){
System.out.println("The number "+j+" appears "+digit[j]+" times between 1 - 100.");
}
}
}
``````

I tried changing the charAt each digit to a String to count the occurrence using the try and catch. No dice so far.

### >Solution :

You do not need a string operations. You have to use `x % 10` to get the last digit, and then `x \= 10`, to remove this last digit.

``````public class CountEachDigit {

public static void main(String... args) {
final int lo = 1;
final int hi = 100;
int[] digits = countDigits(lo, hi);

for (int i = 0; i < 10; i++)
System.out.format("The number %d appears %d times between %d - %d.\n", i, digits[i], lo, hi);
}

private static int[] countDigits(int lo, int hi) {
int[] digits = new int;

for (int i = lo; i <= hi; i++) {
if (i == 0) {
digits++;
} else {
int val = i;

do {
digits[val % 10]++;
} while ((val /= 10) > 0);
}
}

return digits;
}

}
``````

Demo:

``````The number 0 appears 11 times between 1 - 100.
The number 1 appears 21 times between 1 - 100.
The number 2 appears 20 times between 1 - 100.
The number 3 appears 20 times between 1 - 100.
The number 4 appears 20 times between 1 - 100.
The number 5 appears 20 times between 1 - 100.
The number 6 appears 20 times between 1 - 100.
The number 7 appears 20 times between 1 - 100.
The number 8 appears 20 times between 1 - 100.
The number 9 appears 20 times between 1 - 100.
``````