查找最常见的号码

时间:2013-12-08 22:57:06

标签: java

我是Java新手。这是我的作业,但我无法解决它。有人想帮帮我吗?谢谢。 该程序将采用一位数字列表,在运行程序时在命令行输入,并找到最频繁输入的数字。

这是我的代码。

public class MostFrequent{
    public static void main(String[] args){
        int num = 0;
        int []freq= new int[10];//0-9
        for (int i=0; i<args.length; i++){
            try{
                num = Integer.parseInt(args[i]);
                freq[num]++;
            }
            catch (NumberFormatException nfe){
            }
        }
        int max= 0, j;
        for (j=1; j<args.length; j++){
            while(freq[j]>freq[max]){
                max=j;
            }
        }
        System.out.println("The digit that appears most frequently is " + max);
    }
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的代码编译并运行正常。我和评论者一样,很确定你的问题在于你没有传递任何论据。

假设您正在使用命令行:

String [] args 是您在运行时传入的参数列表,如下所示

java MostFrequent 4 6 3 6 7 5 3 2 4 6 8 4 3 5 6

我想知道,你认为你正在扫描过多少个数字?

答案 1 :(得分:0)

您的代码运行正常,您可以使频率计数更简单:

public class MostFrequent{
    public static void main(String[] args) {
        int[] freq= new int[10];//0-9
        for (String arg : args) {
            try {
                freq[Integer.parseInt(arg)]++;
            }
            catch (NumberFormatException nfe) {
            }
        }
        int max= 0, j;
        for (j=1; j<args.length; j++) {
            while(freq[j]>freq[max]) {
                max=j;
            }
        }
        System.out.println("The digit that appears most frequently is " + max);
    }
}

有些人不喜欢基于异常的预编程,但在这种情况下检查用户输入时,简单性和可读性远远超过性能问题。