0

我正在尝试创建一个模块来计算每个数字在给定数字中出现的次数。我遇到的问题是,不是将 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。

4

2 回答 2

6

它看起来像而不是

 for (int i = 0; i < t.length ; i++){
   t[temp]++;
 }

你应该这样做

 t[temp]++;
于 2012-12-16T17:34:42.313 回答
0

或者你可以写。

public static int [] occurence(long nb){
    int[] count = new int [10];

    for(;nb > 0;nb /= 10) 
        count[nb % 10]++;

    return count;
}
于 2012-12-16T18:12:46.677 回答