I need to write a program using arrays, which takes a number and returns the number of incidents of each digit within that number. I think I may be overcomplicating things here.
import java.util.*;
class Exercice7 {
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un nombre naturel:"); // Get number
int n = sc.nextInt(); // Store number as n
String str = Integer.toString(n); // Store n as string
int length = str.length(); // Store string length as length
int arr[] = new int[length]; // Declare array with as many elements as n has digits
int digit[] = {0,1,2,3,4,5,6,7,8,9}; // Declare array with the digits to look for
int count = 0; // Number of occurences of each digit
for (int i=(length-1); i>=0; i--) { // Fill array with digits from number input
while (n>0) {
arr[i]= n%10;
n = n/10;
}
}
for (int j=0; j<10; j++) {
count = 0;
for (int i=0; i<length; i++) {
if (arr[i]==digit[j]) {
count++;
}
}
if (count>0) {
System.out.println(digit[j] + " occurs " + count + " times.");
}
}
}
}
This code only returns the number of 0s and 1s and it's wrong anyway. Could someone push me in the right direction?
Declare array with ten elements ([0..9]) - there you will have occurences of each digit in your number. Simply using counts[3] will get you number of occurences of digit 3.
Then you just iterate over string number and read next char as integer and increase counter. This way you have only one loop. For example, having 3 in your number, you use counts[3]++.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With