我是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);
}
}
感谢您的帮助。
答案 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);
}
}
有些人不喜欢基于异常的预编程,但在这种情况下检查用户输入时,简单性和可读性远远超过性能问题。