一篇博客的附录(主线的后续会补)
根据韩顺平老师的题目稍微改了一下
int[] arr = {3, 10, 26, 28, 30, 40, 50, 60};
插入和输出数组,
要求顺序插入
同时判断抽出的元素是否在数组里面
后续会写博客讲解数组,分支,循环
同时也会那博客解释一下代码
copy代码一定要在评论打个谢谢,球球啦!
import java.util.Scanner;
public class InsertionSort {
public static void main(String[] args) {
//静态创建数组
int[] arr = {3, 10, 26, 28, 30, 40, 50, 60};
//Scanner方法
Scanner myScanner = new Scanner(System.in);
//死循环
for(;;) {
//获取判断数
System.out.println("请选择你的操作:顺序插入一个数进入数组请输入:插入 "
+"删除一个数组里面的一个数请输入;抽出 "+"输入其他则退出程序");
String a = myScanner.next();
//条件判断
if(a.equals("插入")) {
//获取想要插入的元素
System.out.print("请输入你想插入的数字");
int num = myScanner.nextInt();
int index = -1;
//创建一个addArr的数组,长度比原数组,加一
int[] addArr = new int[arr.length + 1];
//遍历数组
for(int i = 0; i < addArr.length; i++) {
//判断插入的数和数组里面各个元素的大小
if(num < arr[i]) {
index = i;
break;
}
}
for(int i = 0,j = 0; i < addArr.length; i++) {
if(i != index) {
addArr[i] = arr[j];
j++;
}
else {
addArr[i] = num;
}
}
//地址拷贝,输出验证结果
arr = addArr;
System.out.println("=====插入元素后的数组=====");
for(int i = 0; i < arr.length;i++) {
System.out.print(arr[i] + " " );
}
System.out.println();
}
//条件判断,抽出数组元素
else if(a.equals("抽出")) {
//获取想要抽出的数组元素
System.out.println("请输入你想要抽出的元素");
int num1 = myScanner.nextInt();
//给出锚定物标记
int index = -1;
int index1 = -1;
//创建一个数组,抽出元素后的数组比原数组长度减一
int[] decArr = new int[arr.length - 1];
//循环遍历数组
for(int i = 0; i < arr.length; i++) {
//条件判断需要抽出的数是否是数组内的元素
if(num1 == arr[i]) {
index = i;
}
}
//条件判断锚定数的数值是否改动,如果没有改动说明并没有找到数
if(index == -1) {
System.out.println("你所输入的数不在数组内,一切都在我的计算中别想卡bug");
continue;
}
//改动了说明找到那个数了
else{
System.out.println("你想要删除的数找到了");
//循环遍历数组赋值,循环条件的判断根据锚定的数进行范围限定。
for(int i = 0; i < index; i++) {
decArr[i] = arr[i];
}
//略过需要抽出的数继续循环遍历
for(int i = index; i < decArr.length; i++) {
decArr[i] = arr[i+1];
}
//地址拷贝
arr = decArr;
//遍历输出数组验证正确性
System.out.println("=====抽出元素后的数组=====");
for(int i = 0; i < arr.length;i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
else {
System.out.println("退出程序成功");
break;
}
}
}
}