Java 运行时错误,原因是我可以';不明白

Java 运行时错误,原因是我可以';不明白,java,arraylist,Java,Arraylist,这段代码应该获取两个长度为3的整数数组列表,例如(3,3,4)和(1,2,3),比较每个索引,并找出哪个更大 然后,它会将分数奖励给较大的一个,因此3>1表示数组列表1获得总分1-0的分数,3>2表示数组列表1获得总分2-0的分数,4>3表示数组列表1获得总分3-0的分数。然后创建一个长度为2的新数组列表,并将第一个索引设置为3,即第一个数组列表的分数,然后将第二个索引设置为0,即第二个数组列表的分数 由于某种原因,我得到了一个运行时错误,我无法找出它是什么 任何帮助都是非常感谢的,如果有人能用

这段代码应该获取两个长度为3的整数数组列表,例如(3,3,4)和(1,2,3),比较每个索引,并找出哪个更大

然后,它会将分数奖励给较大的一个,因此3>1表示数组列表1获得总分1-0的分数,3>2表示数组列表1获得总分2-0的分数,4>3表示数组列表1获得总分3-0的分数。然后创建一个长度为2的新数组列表,并将第一个索引设置为3,即第一个数组列表的分数,然后将第二个索引设置为0,即第二个数组列表的分数

由于某种原因,我得到了一个运行时错误,我无法找出它是什么

任何帮助都是非常感谢的,如果有人能用外行的术语解释什么是运行时错误,那将是非常感谢的

static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
        int bobscore = 0;
        int alicescore = 0;
        int throwaway = 0;
        
    
        for (int i = 0; i < a.size(); i ++){
            if (a.get(i) == b.get(i)){
                throwaway++;
            }       
            
            if (a.get(i) > b.get(i)){
                alicescore++;
            }       
            if (a.get(i) < b.get(i)){
                bobscore++;
            }       
            
        }
        
        List<Integer> scores = new ArrayList<>(2);
        scores.set(0, alicescore);
        scores.set(1, bobscore);
        return scores;
    }
静态列表compareTriplets(列表a、列表b){
int-bobscore=0;
int alicescore=0;
int-throwaway=0;
对于(int i=0;ib.get(i)){
alicescore++;
}       
如果(a.get(i)
这部分:

List<Integer> scores = new ArrayList<>(2);
        scores.set(0, alicescore);
        scores.set(1, bobscore);
甚至:

int[] scores = new int[2];
scores[0] = aliceScore;
scores[1] = bobScore;

请注意,arraylist和arrays是完全不同的。ArrayList一开始是空的,并且可以增长。数组有一个在创建时必须提供的设置大小,不能更小或更大;新整数[2]
的大小为2。永远都是。(名称“ArrayList”指的是它在内部使用数组来完成其工作的概念)。

使用简单的静态函数
List.of(aliceScore,bobScore)
arrays.asList(aliceScore,bobScore)
返回列表结果。

第一眼:假设ArrayList的大小相同,而且它们不是空的。可能在开始对它们做任何操作之前检查大小?运行时错误是在编译时无法检测到的错误。换句话说,“编译器没有预见到的事情发生了”,例如一个空列表,您希望列表的长度为3。带有int的ArrayList构造函数仅用于设置容量,而不是大小。只需使用
add
而不是
set
。另外,该
一次性
变量和递增该变量的if语句是未使用的。是的。您不能设置尚未添加到列表中的值。使用
add
,而不是
set
。为了便于将来参考,如果您需要有关任何类型错误的堆栈溢出的帮助,最好将错误本身包含在问题中。这样,想帮助你的人更容易发现你做错了什么。
int[] scores = new int[2];
scores[0] = aliceScore;
scores[1] = bobScore;