2201_75300480 2022-11-25 09:08 采纳率: 66.7%
浏览 10
已结题

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

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

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-11-25 09:12
    关注

    这错误意思是数组长度是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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 游一游走一走 2022-11-25 09:14
    关注
    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));
        }
    }
    
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月3日
  • 已采纳回答 11月25日
  • 修改了问题 11月25日
  • 创建了问题 11月25日

悬赏问题

  • ¥30 如何隐藏Tornado版本号
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 设计一个时序电路,使其状态按2421(B)循环,并能自启动
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法
  • ¥15 转录组分析做聚类树图时癌旁组被分到了癌组
  • ¥15 大一Python字典