题目
有一个数组,其中有十个元素从小到大依次排列 {12,14,23,45,66,68,70,77,90,91}。再通过键盘录入一个整数数字。要求:把数字放入数组序列中,生成一个新的数组,并且数组的元素依旧是从小到大排列的。执行效果如下:
```java
请输入一个整数数字:
50
生成的新数组是:12 14 23 45 50 66 68 70 77 90 91
```
训练提示
1. 数组的长度是不能改变的,所以增加一个元素需要定义一个新数组。
2. 数组元素是从小到大排列的,如何找到新元素存放的位置?
解题方案
使用数组的遍历,用元素依次和数字作比较,找到正确的存放位置。
操作步骤
1. 定义原数组arr,和一个比原数组长度大1的新数组brr。
2. 通过键盘录入的方式输入变量num的值。
3. 定义变量index用于记录num存放的索引位置。
4. 遍历数组,小于或等于num的元素直接存放到原来的位置,大于num的元素往后移动一个位置。
5. 存放结束之后,中间会空出一个位置,在遍历时用index记录这个位置。把num放在这个索引处。
6. 最终遍历新数组打印结果。
完整代码实现
package Package2;
/*
有一个数组,其中有十个元素从小到大依次排列 {12,14,23,45,66,68,70,77,90,91}。
再通过键盘录入一个整数数字。要求:把数字放入数组序列中,生成一个新的数组,并且数组的元素依旧是从小到大排列的。
*/
import java.util.Scanner;
public class InsertElementToArray {
public static void main(String[] args) {
//定义数组
int[] arr = {12, 14, 23, 45, 66, 68, 70, 77, 90, 91};
int[] brr = new int[11];
//录入数字
System.out.println("Please input a int number, Let me insert it to the array by order");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//插入数字
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (num >= arr[i]) {
brr[i] = arr[i];
index = i + 1;
} else {
brr[i + 1] = arr[i];
}
}
brr[index] = num;
//输出结果
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i] + " ");
}
}
}
数组题真恶心,就像大便,但它是码农种田必须的肥料。