Java学习之路
Java开篇:自己是在开学前即将学习Java课程之前自学Java。自我感觉在学习了C语言、数据结构与算法之后,感觉自学Java是真的轻松太多了(可能是我想多了),好比如一些语句是真的相通,但是还是会有那么一丢丢丢的区别。那么我在之后的学习当中,一些太过于基础而常见的重要知识点我就不再拿出来啦,因为csdn上是真的很多,所以就分享一下自己在自学Java的时候写的一些比较常用常见的知识点和代码!
目前使用的软件为Sublime Text3
Java数组按位置插入元素⭕️在拿到这种练习题的时候,我首先第一个想到的是C语言中的顺序表,但是呢,我蒙了,没法下笔,由于我还没学到函数吧,不会用,就自己在main中 *** 作的,用了一个do-while循环,为了让代码更任性化,添加了是否继续的 *** 作,并且借助了备用数组和arr数组之间进行Copy来实现数据的插入,C语言中是可以不用这样的,在C语言中插入位置后面的元素依次向后直接移动就可以了,可能是我还没有学到位或者说这种 *** 作在后面Java是有的,希望各位侠士不要pen我的 *** 作哈 ,也希望同胞们多评论指教! ❤️❤️❤️
我的基本想法:
1️⃣ code: 用两个变量接收用户输入的插入位置(locat)以及插入的数值(add);
判断用户输入的插入位置是否合法 locat < 1 || locat > arr.length + 1,若不合法显示提示信息并使用循环重新输入;
若插入位置合法,则将locat位置以及后面的全部元素复制到另外一个数组中,并且下标是l0cat开始(因为arr[locat-1]是插入位置,为了空出位置插入新元素);
将插入的元素插入到arrNew[locat-1]位置上;
再将arr数组中的 locat 位置前面所有元素再复制到arrNew中去;
使arr重新指向arrNew数组。
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数组按位置删除元素
我的基本想法:
2️⃣ code: 同样的思想,使用备用数组 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数组。
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 // 没有元素了 // 感谢使用:)
感谢浏览,下篇见
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)