使用数组作为计数器

时间:2012-12-16 17:32:31

标签: java arrays

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

2 个答案:

答案 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;
}