gpt4 book ai didi

java - 尝试对两个不同长度的数组求和时出错

转载 作者:行者123 更新时间:2023-12-01 22:38:20 27 4
gpt4 key购买 nike

我正在尝试将每个数组的元素相加以获得总和,无论一个数组是否大于另一个数组。这是我遇到的错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5

错误链接到第 13 行或第 23 行,具体取决于我的测试类中哪个数组更大。( pickedList[i] = listA[i] + listB[i]; 是错误行)

编辑:如果数组具有相同数量的元素,则代码可以工作,但当元素数量较大时,代码就会崩溃。

    public static int[] AddArray(int[] listA, int[] listB)

{
int aLen = listA.length;
int bLen = listB.length;
int[] pickedList = null;
//if array 1 is longer, make picklist have same number of elements then add
//both array elements together
if (aLen >= bLen)
{ pickedList = new int[aLen];
for( int i = 0; i < aLen; i ++)
{
pickedList[i] = listA[i] + listB[i];
}
}
//if array 2 is longer, make picklist have same number of elements then add
//both array elements together
else
{
pickedList = new int[bLen];
for( int i = 0; i < bLen; i ++)
{
pickedList[i] = listA[i] + listB[i] ;
}
}
return pickedList;
}
}

最佳答案

你的错误很简单:

if (aLen >= bLen)
{ pickedList = new int[aLen];
for( int i = 0; i < aLen; i ++)
{
pickedList[i] = listA[i] + listB[i];

你有这个。

如果alen比blen长,那么如果你的for循环达到a的长度,你会得到一个错误,因为你有listB[i] - 你试图访问B中不存在的元素那里。

让我更清楚地说明这一点。假设数组 a 的长度为 5,数组 b 的长度为 3。a 大于 b,因此您将 i 从 0 循环到 5。当 i = 0, i = 1, i 时,一切都会好起来的= 2,但是一旦到达 i = 3,就没有 listB[i],因为列表 B 在 0、1 和 2 位置只有一个 elemnet,所以你会得到你得到的错误。

我希望这会有所帮助。祝你好运:)

关于java - 尝试对两个不同长度的数组求和时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569731/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com