数组中最低和最高的数字

时间:2015-02-25 21:00:11

标签: java

这是我的代码

 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);

}

由于某种原因,它不会打印出最大值和最小值,我尝试了几件事,我的想法是我可能需要再次声明最大值和最小值,但是要做什么?

2 个答案:

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

请参阅What's New in Java 8