Java数组按位置进行插入和删除元素-----Java学习之路笔记

Java数组按位置进行插入和删除元素-----Java学习之路笔记,第1张

Java数组按位置进行插入和删除元素-----Java学习之路笔记

Java学习之路
     Java开篇:自己是在开学前即将学习Java课程之前自学Java。自我感觉在学习了C语言、数据结构与算法之后,感觉自学Java是真的轻松太多了(可能是我想多了),好比如一些语句是真的相通,但是还是会有那么一丢丢丢的区别。那么我在之后的学习当中,一些太过于基础而常见的重要知识点我就不再拿出来啦,因为csdn上是真的很多,所以就分享一下自己在自学Java的时候写的一些比较常用常见的知识点和代码!

 目前使用的软件为Sublime Text3

 Java数组按位置插入元素

     ⭕️在拿到这种练习题的时候,我首先第一个想到的是C语言中的顺序表,但是呢,我蒙了,没法下笔,由于我还没学到函数吧,不会用,就自己在main中 *** 作的,用了一个do-while循环,为了让代码更任性化,添加了是否继续的 *** 作,并且借助了备用数组和arr数组之间进行Copy来实现数据的插入,C语言中是可以不用这样的,在C语言中插入位置后面的元素依次向后直接移动就可以了,可能是我还没有学到位或者说这种 *** 作在后面Java是有的,希望各位侠士不要pen我的 *** 作哈 ,也希望同胞们多评论指教! ❤️❤️❤️

我的基本想法

 用两个变量接收用户输入的插入位置(locat)以及插入的数值(add);
 判断用户输入的插入位置是否合法 locat < 1 || locat > arr.length + 1,若不合法显示提示信息并使用循环重新输入;
 若插入位置合法,则将locat位置以及后面的全部元素复制到另外一个数组中,并且下标是l0cat开始(因为arr[locat-1]是插入位置,为了空出位置插入新元素);
 将插入的元素插入到arrNew[locat-1]位置上;
 再将arr数组中的 locat 位置前面所有元素再复制到arrNew中去;
使arr重新指向arrNew数组

1️⃣ code:
import java.util.Scanner;
public class ArrayAdd {

	public static void main(String[] args) {

		int arr[] = {1,2,3,4,5};	//arr初始值
		System.out.println("=======before of Add========");
		for (int i = 0;i < arr.length ;i++ ) {
			System.out.println("arr[" + i + "] = " + arr[i]);
		}
		char ch;
		do{//do-while循环
			Scanner myScanner = new Scanner(System.in);
			System.out.print("请输入插入的位置及值(用空格隔开):");
			int locat = myScanner.nextInt();//接收位置
			int add = myScanner.nextInt();//接收插入的数据元素
			if (locat > arr.length + 1 || locat < 1) {	//判断位置合法性	
				System.out.println("插入位置不合法");
			}
			else {
				int m = arr.length;
				int arrNew[] = new int[arr.length + 1];	//arrNew数组大小为arr.length + 1
				while(m >= locat){//赋值后面的元素
					arrNew[m] = arr[m-1];
					m--;
				}

				arrNew[locat-1] = add;
				int j = 0;
				while(j < locat-1){//复制前面的元素
					arrNew[j] = arr[j];
					j++;
				}

				arr = arrNew;	//arr重新指向
				System.out.println("n=======after of Add========");
				for (int k = 0;k < arr.length ;k++ ) {
					System.out.println("arr[" + k + "] = " + arr[k]);
				}
			}
			System.out.println("是否继续插入(添加):");
			ch = myScanner.next().charAt(0);
		}while(ch == 'Y' || ch == 'y');//判断是否继续

		System.out.println("感谢使用:)");
	}
}

// D:Javajavacodechapter06>java ArrayAdd
// =======before of Add========
// arr[0] = 1
// arr[1] = 2
// arr[2] = 3
// arr[3] = 4
// arr[4] = 5
// 请输入插入的位置及值(用空格隔开):1 10

// =======after of Add========
// arr[0] = 10
// arr[1] = 1
// arr[2] = 2
// arr[3] = 3
// arr[4] = 4
// arr[5] = 5
// 是否继续插入(添加):
// y
// 请输入插入的位置及值(用空格隔开):2 20

// =======after of Add========
// arr[0] = 10
// arr[1] = 20
// arr[2] = 1
// arr[3] = 2
// arr[4] = 3
// arr[5] = 4
// arr[6] = 5
// 是否继续插入(添加):
// y
// 请输入插入的位置及值(用空格隔开):3 100

// =======after of Add========
// arr[0] = 10
// arr[1] = 20
// arr[2] = 100
// arr[3] = 1
// arr[4] = 2
// arr[5] = 3
// arr[6] = 4
// arr[7] = 5
// 是否继续插入(添加):
// y
// 请输入插入的位置及值(用空格隔开):7 1000

// =======after of Add========
// arr[0] = 10
// arr[1] = 20
// arr[2] = 100
// arr[3] = 1
// arr[4] = 2
// arr[5] = 3
// arr[6] = 1000
// arr[7] = 4
// arr[8] = 5
// 是否继续插入(添加):
// ........
 Java数组按位置删除元素

我的基本想法

 同样的思想,使用备用数组 arrNew 进行删除arr中的元素;
 接收用户输入的删除位置locat(实际删除的是locat-1的位置上的元素);
 判断arr数组长度是否为<1,是则没有元素可删除,否则进行删除;
 判断删除位置locat是否合法:locat > arr.length || locat < 1,若不合法显示提示信息并使用循环重新输入;
合法,则将locat位置之后的所有元素复制到备用数组arrNew(arrNew数组长度为arr数组的长度-1)中,且从locat-1位置开始的(相当于arr中的locat-1位置元素不要了);
 再将locat-1之前的所有元素复制到arrNew前面去;
使arr重新指向arrNew数组

2️⃣ code:
import java.util.Scanner;
public class ArrayDelete {

	public static void main(String[] args) {

		int arr[] = {1,2,3,4,5};	//arr初始值
		System.out.println("=======before of Add========");
		for (int i = 0;i < arr.length ;i++ ) {
			System.out.println("arr[" + i + "] = " + arr[i]);
		}
		char ch;
		do{//do-while循环
			Scanner myScanner = new Scanner(System.in);
			System.out.print("请输入删除的元素的位置:");
			int locat = myScanner.nextInt();
			if (arr.length < 1) {//判断是否有可删除的元素
				System.out.println("没有元素了");
				break;
			}
			if (locat > arr.length || locat < 1) {//判断位置合法性	
				System.out.println("删除位置不合法");
			}
			else {
				int arrNew[] = new int[arr.length-1];
				for (int m = locat,j = 0 ; m <= arr.length - 1 ;m++,j++ ) {
					arrNew[m-1] = arr[m];//复制后面的元素
				}

				for (int n = 0; n < locat-1 ;n++ ) {//复制前面的元素
					arrNew[n] = arr[n];
				}
				arr = arrNew;	//arr重新指向
				System.out.println("n=======after of Add========");
				for (int k = 0;k < arr.length ;k++ ) {
					System.out.println("arr[" + k + "] = " + arr[k]);
				}
			}

			System.out.println("是否继续删除(y || Y):");
			ch = myScanner.next().charAt(0);
		}while(ch == 'Y' || ch == 'y');//判断是否继续

		System.out.println("感谢使用:)");
	}
}

// D:Javajavacodechapter06>java ArrayDelete
// =======before of Add========
// arr[0] = 1
// arr[1] = 2
// arr[2] = 3
// arr[3] = 4
// arr[4] = 5
// 请输入删除的元素的位置:5

// =======after of Add========
// arr[0] = 1
// arr[1] = 2
// arr[2] = 3
// arr[3] = 4
// 是否继续删除(y || Y):
// y
// 请输入删除的元素的位置:4

// =======after of Add========
// arr[0] = 1
// arr[1] = 2
// arr[2] = 3
// 是否继续删除(y || Y):
// y
// 请输入删除的元素的位置:3

// =======after of Add========
// arr[0] = 1
// arr[1] = 2
// 是否继续删除(y || Y):
// y
// 请输入删除的元素的位置:2

// =======after of Add========
// arr[0] = 1
// 是否继续删除(y || Y):
// y
// 请输入删除的元素的位置:1

// =======after of Add========
// 是否继续删除(缩减):
// y
// 请输入删除的元素的位置:2
// 没有元素了
// 感谢使用:)

 感谢浏览,下篇见 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5715489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存