这是我的代码
private static void stats(String[] args) {
if (args.length == 1) {
System.out.print("Error: Argument count mismatch");
return;
}
int[] array = {0};
double average = 0.0;
int total = 0;
int count = 0;
int max = array[0];
int min = max;
for (int i = 1;i < args.length;i++) {
if (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
return;
}
else {
count++;
int a = Integer.parseInt(args[i]);
total += a;
average = total / count;
max = a;
for (int d = 1; d < array.length; d++) {
if (array[d] > max) {
max = array[d];
}
if (array[d] < min) { // change to > for largest
min = array[d];
}
}
}
}
System.out.println("Total " + total);
System.out.println("Max " + max);
System.out.println("Min " + min);
System.out.printf("Average " + "%.2f\n" , average);
}
由于某种原因,它不会打印出最大值和最小值,我尝试了几件事,我的想法是我可能需要再次声明最大值和最小值,但是要做什么?
答案 0 :(得分:0)
请考虑以下stats()
方法的代码。也许它会启发你。
private static void stats(String[] args)
{
final int count = args.length - 1;
int total = 0;
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (int i = 0; i < count; i++) {
int a = Integer.parseInt(args[i + 1]);
total += a;
if (max < a) max = a;
if (min > a) min = a;
}
System.out.println("Total " + total);
System.out.println("Max " + max);
System.out.println("Min " + min);
System.out.printf("Average " + "%.2f\n", (double)total / count);
}
答案 1 :(得分:0)
这必须是重复的问题,但不能轻易找到以前的答案。 自从Java 8以来无需手动执行,除非您获得KLOC的付款
String[] strings = ...;
IntSummaryStatistics stats = Arrays.stream(strings)
.collect(Collectors.summarizingInt(Integer::parseInt));