我做了作业“拿两个给定的数组(已经排序,例如{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)
答案 0 :(得分:3)
问题在于此代码:
for (int i = a1.length; i < c.length; i++){
c[i] = b1[i];
此处b1
索引应以0
开头,但您从a1.length
开始。您应该为b1
设置单独的索引,或使用b1[i-a1.length]
。
答案 1 :(得分:0)
请找到逻辑..
你正在使用数组b的'i'索引是问题所在。
解决方案如下。祝你好运
int[] c = new int[a.length + b.length];
int i = 0;
for (i = 0; i < a.length; i++)
c[i] = a[i];
for (int j = 0; j < b.length; j++)
c[i] = b[j];
}