思路
我总结了三种方法可以达成插入数组的目的
1.将需要增加的元素赋给数组中最后一个元素,再将被插入位置后的元素整体下标后移一位
关键代码:
for (int i = 0;i <= a.length-1;i++){
if (b<=a[i]){
//从数组倒数第二位元素开始遍历,从最后一位遍历会导致数组下标越界异常)
for (int j = a.length-2;j>=i;j--){
a[j+1] = a[j];
}
a[i] = b;//插入b
break;
}
}
2.选择性输出,利用for循环搜索,和数组中的元素比较,谁小就输出谁.
关键代码:
for (int i = 0; i < array.length; i++) {
//先和最后一位最大的那个数比较
if (i == array.length-1){
if (M > array[i]){
System.out.println(array[i]);
System.out.println(M);
}else {
System.out.println(array[i]);
}}
//从头开始找,谁大输出谁
else {
if (M > array[i] && M < array[i+1]){
System.out.println(array[i]);
System.out.println(M);
}else {
System.out.println(array[i]);
}
}
3.使用正序函数,将输入的元素和原先数组中所有的元素进行正序排序
关键代码: Arrays.sort(arr);
难点
静态数组在初始化时定好了长度,无法改变.
我们可以采用如下两种方法:
- 设置数组整体长度包括要输入进的元素个数,例如:我要输入十位数数组并且插入一个元素,则设置数组长度为11.与此同时,将最后一位设置为0,输入后再将0替换成输入数字
- .使用copyOf函数将数组的长度加1,但在例子中,我们设置数组长度为10,copyOf函数实行后数组 的长度才为11
关键代码: arr=Arrays.copyOf(arr,arr.length+1);
作者代码如下:
import java.util.Arrays;
import java.util.Scanner;
public class _addtest {
public static void main(String[] args) {
int arr[]=new int[9];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt();
}
int shuru = scanner.nextInt();
arr=Arrays.copyOf(arr,arr.length+1);
arr[arr.length-1]= shuru;
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}