import java.util.Scanner;
//已知有个升序的数组,要求插入一个元素,该数组顺序依然是升序,比如:[10,12,45,90],添加23后,数组为[10,12,23,45,90]
public class HomeWork{
//编写main函数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入数组长度:");
int len = sc.nextInt();
int[] arr = new int[len];
int temp = 0;
//输入数组
for (int i = 0;i < arr.length ; i++) {
System.out.print("请输入第" + (i + 1) + "个元素:");
arr[i] = sc.nextInt();
System.out.println();
}
//进行排序
for(int i = 0;i < arr.length - 1; i++){
for (int j = 0;j < arr.length - 1 - i ; j++ ) {
//如果前者大于后者,则交换位置
if(arr[j] > arr[j + 1]){
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//输出数组
System.out.println("原数组为:");
for (int i = 0;i < arr.length; i++ ) {
System.out.println("第" + (i + 1) + "个数组元素为:" + arr[i]);
System.out.println();
}
//插入元素
System.out.println("输入待插入元素个数:");
int count = sc.nextInt();
int[] arr1 = new int[arr.length + count];
for (int i = 1;i <= count; i++ ) {
int index = -1;
System.out.println("输入第" + i +"个元素:");
int insertNum = sc.nextInt();
for (int l = 0;l < arr.length ; l++ ) { //确定插入位置
if(insertNum <= arr[l]){
index = l;
break;
}
}
if(index == -1) {
index = arr.length;
}
for(int j = 0,k = 0;j <= (arr.length + i);j++ ) { //执行插入操作
if(j != index) {
arr1[j] = arr[k];
k++;
} else {
arr1[j] = insertNum;
}
}
}
System.out.println("修改后的数组为:");
for (int i = 0;i < arr1.length; i++ ) {
System.out.println("第" + (i + 1) + "个数组元素为:" + arr1[i]);
System.out.println();
}
}
}
数组越界异常了,数组长度为3,你访问了arr[3]导致报错
报错提示了85行,是这行吧
for(int j = 0,k = 0;j <= (arr.length + i);j++ ) { //执行插入操作
这块逻辑仔细看一下,j最多只能取到arr.length-1
数组越界了,i的值必须小于length,而你加了i,肯定会报错的。