我正在尝试创建一个模块,计算每个数字在给定数字中出现的次数。我遇到的问题是,而不是将相应数字的数组值加1,它似乎加10,或者它连接数组的默认值(在这种情况下为0),尽管这似乎不太可能。
我的模块:
public class UtilNumber{
public static int [] Occurence(int nb){
int temp;
int [] t = new int [10];
while (nb !=0){
temp = nb % 10;
for (int i = 0; i < t.length ; i++){
t[temp]++;
}
nb /= 10;
}
return t;
}
}
我的主要人物:
import java.util.scanner;
public class Primary{
public static void main(String [] args){
Scanner keyboard = new Scanner(System.in);
int [] tab;
int nb = keyboard.nextInt();
tab = UtilNumber.Occurence(nb);
for (int i = 0 ; i < tab.length ; i++){
if (tab[i] != 0){
System.out.println(i+" is present "+tab[i]+" time(s).");
}
}
}
}
例如,当我输入888时,它应返回3,但它返回30。
答案 0 :(得分:6)
看起来不是
for (int i = 0; i < t.length ; i++){
t[temp]++;
}
你应该做的
t[temp]++;
答案 1 :(得分:0)
或者你可以写。
public static int [] occurence(long nb){
int[] count = new int [10];
for(;nb > 0;nb /= 10)
count[nb % 10]++;
return count;
}