## How to count frequency of digits in a given number in java / Java program to count the number of times each digit occurs in a number

This problem is pretty common in interviews and computer examinations. Candidate is required to write a program where a user enters any random integer and the program should display the digits and their count in the number. For Example, if the entered number is 74526429492, then frequency of 7 is 1, 4 is 3, 5 is 1, 6 is 1, 2 is 3, 9 is 2. In tabular format,

 Number Frequency 7 1 4 3 5 1 6 1 2 3 9 2

There can be many ways to program the above problem. Below are listed two fairly easy methods.

Method 1 : Using array

Initialize an array of size 10 whose each location represents a digit from 0 to 9. Value at a location of the array is the count(or frequency of occurrence) of that digit.That is, a value of 2 at index 5 means that 5 occurs 2 times in the number.

Extract the digits of the number by taking modulus of the number by 10. Increment the count at location corresponding to the digit extracted. Thus, if the digit is 2, then increment the value at 2nd position of the array, if the digit is 8, then increment the value at 8th position of the array and so on.

Continue this till all the digits of the array have been covered.

```public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter the number"); int number = scanner.nextInt(); // initialize array to hold count of digits int[] digitArray = new int[10]; int remainder = 0; // loop to get digits of the number while (number > 0) { // get the last digit remainder = number % 10; // increment the count of this digit digitArray[remainder]++; // remove the last digit from the number number = number / 10; } System.out.println("-------------------------"); System.out.println("Number\tFrequency"); System.out.println("-------------------------"); // iterate over the digit array. Each count represents a digit from 0 to 9 for (int counter = 0; counter < digitArray.length; counter++) { // get the count int digitCount = digitArray[counter]; if (digitCount != 0) { System.out.println(counter + "\t" + digitCount); } } scanner.close(); }```

Output

Enter the number
2345342
———————
Number   Frequency
———————
2              2
3              2
4              2
5              1

Method 2 : Using java.util.Map

Initialize a `java.util.Map` which will hold the digit as a key and its frequency of occurrence in the number as value. As in the above example, each digit is extracted and every time it is put as a key, the value corresponding to the key is incremented. In order the print the digits and their frequency count, the map is iterated.

```public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter the number"); int number = scanner.nextInt(); // initialize map to hold digits and their count Map<Integer, Integer> digitMap = new HashMap<Integer, Integer>(); int remainder = 0; // loop to get digits of the number while (number > 0) { // get the last digit remainder = number % 10; // get the frequency count of this digit Integer count = digitMap.get(remainder); // for the first time count will be null, hence put 1 if (count == null) { digitMap.put(remainder, 1); } else { // increment the count for this digit digitMap.put(remainder, ++count); } // remove the last digit from the number number = number / 10; } System.out.println("-------------------------"); System.out.println("Number\tFrequency"); System.out.println("-------------------------"); Iterator iterator = digitMap.keySet().iterator(); while (iterator.hasNext()) { int digit = iterator.next(); int digitCount = digitMap.get(digit); System.out.println(digit + "\t" + digitCount); } scanner.close(); }```

Output

Enter the number
2345342
————————-
Number   Frequency
————————-
2              2
3              2
4              2
5              1

Let’s tweak in :

1. A `java.util.Map` stores values in key-value pairs. The keys are unique and when a value with an already existing key is inserted, it overwrites the previous value corresponding to that key.

Hope this post was helpful. For any additions, modifications required, kindly comment in the space below.

2

Never Miss an article !

Get the new post delivered straight into your inbox, enter your email and hit the button

You have successfully subscribed to the newsletter

There was an error while trying to send your request. Please try again.

codippa will use the information you provide on this form to be in touch with you and to provide updates and marketing.