第一行输入评委数,第二行输入每个评委的分数,出掉最大值和最小值,输出平均值保留两位小数,代码错在哪里

6
1 1 1 1 1 1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
at m.Main11.main(Main11.java:8)

Process finished with exit code 1

img

img

这错误意思是数组长度是6,但你程序中给出的下标有6,越界了
主要是你main函数里输入有问题,arr[n] = sc.nextDouble()这句越界了,这时n是6
只需要在主函数中循环输入值就可以了,getMin和getMax函数中只需要与数组元素进行比较,不要再输入了啊
修改如下:

main函数:
double arr[] = new double[n];
for(int i=0;i<6;i++)
    arr[i] = sc.nextDouble();

public static double getMax(double[] arr)
{
    double max = arr[0];
    for(int i=1;i<6;i++)
        if(arr[i] > max)
           max = arr[i];
    return max;
}

public static double getMin(double[] arr)
{
    double min= arr[0];
    for(int i=1;i<6;i++)
        if(arr[i] < min)
           min = arr[i];
    return min;
}
  1. arr声明的是6个,最大的一个只能是arr[5],从0开始计数的
  2. 你得循环接收n个值,把arr填满
  3. 然后再把arr作为参数传递给getMax,getMin,getSum,最好是把输入和处理逻辑分开
  4. 可以参考下述代码
import java.util.Arrays;
import java.util.Scanner;

public class Test02 {
    public static double[] getInput() {
        final Scanner scanner = new Scanner(System.in);
        final int n = scanner.nextInt();
        double[] result = new double[n];
        for (int i = 0; i < result.length; i++) {
            result[i] = scanner.nextDouble();
        }
        return result;
    }

    public static double getMax(double[] arr) {
        double max = arr[0];
        for (int i = 1; i < arr.length; i++)
            if (arr[i] > max)
                max = arr[i];
        return max;
    }

    public static double getMin(double[] arr) {
        double min = arr[0];
        for (int i = 1; i < arr.length; i++)
            if (arr[i] < min)
                min = arr[i];
        return min;
    }

    public static double getSum(double[] arr) {
        double sum = 0;
        for (int i = 0; i < arr.length; i++)
            sum += arr[i];
        return sum;
    }

    public static void main(String[] args) {
        final double[] input = getInput();
        System.out.println(Arrays.toString(input));
        System.out.println(getMax(input));
        System.out.println(getMin(input));
        System.out.println(getSum(input));
    }
}