我需要使用数组编写一个程序,它接受一个数字并返回该数字内每个数字的事件数。我想我可能会在这里过分复杂。
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.");
}
}
}
}
此代码仅返回0和1的数字,但无论如何它都是错误的。有人会把我推向正确的方向吗?
答案 0 :(得分:4)
声明具有十个元素的数组([0..9]) - 在那里您将出现数字中每个数字的出现。只需使用counts[3]
即可获得数字3
的出现次数。
然后你只需迭代字符串数字并将下一个字符读取为整数并增加计数器。这样你只有一个循环。例如,如果您的号码中包含3
,则使用counts[3]++
。
答案 1 :(得分:0)
您可以尝试转换为String并读取每个char
int counts[] = {0,0,0,0,0,0,0,0,0,0};
int myNumber=123222;//example
String string=""+myNumber; //converting integer to String
for(int i=0;i<string.length();i++){
try{
int n=Integer.parseInt(string.charAt(i)+"")
counts[n]=counts[n]+1;
}catch(Exception e){}
}
然后打印出来:
for (int i=0; i<counts.length; i++) {
System.out.println(i + " occurs " + counts[i] + " times.");
}
答案 2 :(得分:0)
谢谢deem,以获得答案。我并不完全理解你的意思,但它帮助我走上正轨:
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 num = sc.nextInt(); //* Store number as n */
String str = Integer.toString(num); //* Store n as string *//
char digit[] = {'0','1','2','3','4','5','6','7','8','9'};
int count = 0;
for (int i=0; i<10; i++) {
for (int j=0; j<(str.length()); j++) {
if (str.charAt(j) == digit[i]) {
count++;
}
}
if (count>0) {
System.out.println(digit[i] + " apparait " + count + " fois.");
count = 0;
}
}
}
}
这可能不是最简单的方法,但它有效!如果您想对代码进行改进,请随意添加更多注释。