gpt4 book ai didi

java - 将三个数组合二为一

转载 作者:行者123 更新时间:2023-11-29 03:26:29 25 4
gpt4 key购买 nike

这是我的程序,但它无法运行而且我不知道如何修复它...它抛出异常!

它应该组合三个数组并对长度为 12 的新数组进行排序并打印出来。如果您不立即修复它,我将不胜感激,因为这是家庭作业。但我什么都知道,我就是想不通!我不擅长处理异常...这是错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Combine.Combine(Combine.java:25)
at Combine.main(Combine.java:12)

程序如下:

public class Combine {

public static void main(String[] args){

int[] a = {1,4,5,6 };
int[] b = {3,8,9,11};
int[] c = {0,2,7,10};

Combine( a, b, c);

}

public static int[] Combine(int[] a, int[] b, int[] c)
{


int[] answer = new int[12];
int i = 0, j = 0, k = 0, p = 0;

while (i < 5 && j < 5)
{
if (a[i] < b[j])
answer[k++] = a[i++];

else
answer[k++] = b[j++];
}

while (i < 5 && p < 5 )
{
if (a[i] < c[p])
answer[k++]= a[i++];
else
answer[k++]= c[p];
}

while (j < 5 && p < 5 )
{
if (b[j] < c[p])
answer[k++]= b[j++];
else
answer[k++]= c[p++];
}


while (i < 5)
answer[k++] = a[i++];

while (j < 5)
answer[k++] = b[j++];

while (p < 5)
answer[k++] = c[p++];

return answer;
}

}

最佳答案

我认为基本上所有使用 5 的地方都应该使用 4。

在 Java 中,一个包含 4 个元素的数组 arrarr.length=4,通常你会像这样遍历它

for (int i=0; i<4; i++){
// do something
}

所以尝试将 5 更改为 4。使用 5 将超出数组范围。

更好的是,使用这种循环:

for (int i=0; i<arr.length; i++){
// do something
}

后者是一个更好的做法,
而不是硬编码 4 的长度。
同样的评论适用于 while 循环。

关于java - 将三个数组合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20758505/

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