我的 Java 代码无法处理大于 6 或 7 的实例的大型数据集,但它应该适用于任意数量的实例

问题描述 投票:0回答:1
import java.util.Arrays;
import java.util.Scanner;

class Student1 {
    int[] score = new int[5];

    public void input(int[] arr) {
        // Scanner sc = new Scanner(System.in);
        // for(int i = 0;i<score.length;i++){
        // score[i] = sc.nextInt();
        // }
        score = Arrays.copyOfRange(arr, 0, arr.length);

    }

    public int calculateScore() {
        int sum = 0;
        for (int i = 0; i < score.length; i++) {
            sum += score[i];
        }
        return sum;
    }
}

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        Student1[] stu = new Student1[n];
        for (int i = 0; i < n; i++) {
            stu[i] = new Student1();
            int[] arr = new int[5];
            for (int j = 0; j < arr.length; j++) {
                arr[i] = sc.nextInt();
            }
            
            stu[i].input(arr);
            sc.nextLine();
        }
        int kristScore = stu[0].calculateScore();
        int count = 0;
        for (int i = 1; i < stu.length; i++) {
            if (kristScore < stu[i].calculateScore()) {
                count++;
            }
        }
        System.out.println(count);
    }
}

输入如果这样输入:

10
85 90 78 88 92
75 80 85 70 95
89 92 88 78 84
80 85 70 90 88
95 88 90 85 80
78 70 92 88 85
90 78 85 95 88
70 75 80 92 85
88 84 78 80 90
92 88 85 78 70

它显示错误,如线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:Main.main(Main.java:37)处的索引5超出长度5的范围

尽管我每行只输入了 5 个元素, 我需要计算一行中的值之和大于第一行中的值之和的实例。

java arrays indexoutofboundsexception
1个回答
0
投票

您的索引

arr
不正确。使用
j
代替
i

for (int j = 0; j < arr.length; j++) {
                arr[j] = sc.nextInt();
}
© www.soinside.com 2019 - 2024. All rights reserved.