程序分析
首先要知道,数组是定长的;如果要扩容,则需要调用数组工具(Arrays
)的copyof()
方法。
//对数组arr扩容1个长度
arr = Arrays.copyOf(arr,arr.length + 1);
还有一种方法就是新建一个数组(比原数组长度+1),将原数组的所有元素赋值给新数组。
int[] arr1 = new int[arr.length + 1];
for (int i = 0; i < arr1.length - 1; i++) {
arr1[i] = arr[i];
}
arr1[arr1.length - 1] = num;
代码实现
import java.util.*;
/*30、有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。*/
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 第1步:定义一个有序数组
int[] arr = {11,22,33,44,66,77,88,99};
printArr(arr);//打印未扩容前数组元素
// 第2步:添加数组元素
System.out.print("\ninput a num:");
int num = input.nextInt();
// 第3步:数组扩容并添加元素
// 方法1
arrayExpansion(arr);
arr[arr.length - 1] = num;
// 方法2
/*int[] arr1 = new int[arr.length + 1];
for (int i = 0; i < arr1.length - 1; i++) {
arr1[i] = arr[i];
}
arr1[arr1.length - 1] = num;*/
// 第4步:对扩容后的数组进行排序
Arrays.sort(arr);
printArr(arr); //打印未扩容后数组元素
}
// 数组扩容
private static void arrayExpansion(int[] arr) {
arr = Arrays.copyOf(arr,arr.length + 1);
}
// 打印数组元素
private static void printArr(int[] arr) {
for (int i : arr){
System.out.print(i+",");
}
}
}