gpt4 book ai didi

java - 合并两个数组并短合并数组

转载 作者:行者123 更新时间:2023-12-01 21:51:08 29 4
gpt4 key购买 nike

我的作业是“取两个给定的数组(已经排序,例如{1,2,3})并创建一个包含这两个数组的新数组,然后对其进行排序”,我们有一个对数组进行排序的函数,所以这不是问题,但是对我来说有点复杂,这是我的代码:

public static Scanner in = new Scanner(System.in);

public static void main(String[] args) {
int[] a = new int[3];
int[] b = new int[5];
Help_arr.scan(a);
Help_arr.scan(b);
Help_arr.print(peula(a, b));
}

public static int[] peula(int[] a1, int[] b1) {
int[] c = new int[a1.length + b1.length];
for (int i = 0; i < a1.length; i++)
c[i] = a1[i];
for (int i = a1.length; i < c.length; i++){
c[i] = b1[i];
}
Help_arr.sortup(c);
return c;
}

使用的函数来自Help_arr类:

1)扫描数组:

public static void scan(int[] arr1) {
for (int i = 0; i < arr1.length; i++) {
System.out.println("Enter number" + (i + 1));
arr1[i] = in.nextInt();
}
}

2)打印数组:

public static void print(int[] arr1) {
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
}

3)对数组进行排序:

public static void sortup(int[] arr1) {
int i, mini, temp, j;
for (j = 0; j < arr1.length; j++) {
mini = j;
for (i = j; i < arr1.length; i++) {
if (arr1[i] < arr1[mini])
mini = i;
}
temp = arr1[j];
arr1[j] = arr1[mini];
arr1[mini] = temp;
}
}

我在 c[i]=b1[i]; 行中收到错误数组超出索引范围,但我遵循了代码,这将运行 until i=7 as the c.length is 8这是可能的。但也许我错过了一些东西,这是错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at arrays.PgRonTargilMivhan.peula(PgRonTargilMivhan.java:21)
at arrays.PgRonTargilMivhan.main(PgRonTargilMivhan.java:13)

最佳答案

问题出在这段代码上:

for (int i = a1.length; i < c.length; i++){
c[i] = b1[i];

此处b1索引应以0开头,但您以a1.length开头。您应该为 b1 建立一个单独的索引,或者使用 b1[i-a1.length]

关于java - 合并两个数组并短合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35185346/

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