java数组的增删改查

public class Demo { 1****查询 功能
数组:一个开辟了连续空间的的线性数据结构
* 特点:查询快,增删慢
*
* 数组的常用功能
*
* int[] arr = {10,20,30,40,50};
* 1 查询功能
* 1.1:根据下标查询元素
* 查询每个下标的元素,效率一样吗?
* 效率一致
* 查询公式
* 元素地址 = 首地址+下标*元素类型的字节长度
* 1.2:根据元素查询下标 (效率较低)
* 思路:
* 1.2.1:遍历所有的元素
* 1.2.2:用你要查找的元素和所有的元素做==比较
* 1.2.3:相等判断成立,记录当前元素的下标
* 1.2.4:没有匹配成功,没有此元素
* 1.3 根据元素查询下标:二分搜索法
* 2 添加功能
* 3 删除功能
* 4 修改功能
*
*/

public static void main(String[] args) {
	
	//初始化int类型的数组
	int[] arr = {10,20,30,40,40};
	//1 根据下标查询元素
	//System.out.println(arr[0]);
	//System.out.println(arr[4]);
	//2 根据元素查询下标  查找元素是40的下标
	Scanner sc= new Scanner(System.in);
	System.out.println("请输入你要查询的元素值");
	int num = sc.nextInt(); //你要查找的元素
	int index = -1; //用来记录下标的变量
	//1:遍历所有的元素
	for(int i = 0;i<arr.length;i++){
		//2 用你要查找的元素和所有的元素做==比较
		if(arr[i]==num){
			//3 相等判断成立,记录当前元素的下标
			index = i;//记录当前元素的下标
			break;  //后面元素就不用判断了
		}
	}
	// 4:没有匹配成功,没有此元素
	if(index!=-1){
		System.out.println("元素"+num+"的下标是:"+index);
	}else{
		System.out.println("没有此元素");
	}
	
	
}

}
public class Demo2 { 2 查 最大 or 最小值

1:查找数组的最大值
* 思路:
* 1 假设第一个元素是最大值
* 2 用这个个最大值和后面的元素做大于比较
* 3 如果后面的元素比这个最大值还大,那么后面的元素就是最大值
* 以此类推…
* 4:直到找到真正的最大值
*
* 2:查找数组的最小值
* 思路:
* 1 假设第一个元素是最小值
* 2 用后面的元素和这个最小值和做小于比较
* 3 如果后面的元素比这个最小值还小,那么后面的元素就是最小值
* 以此类推…
* 4:直到找到真正的最小值

public static void main(String[] args) {
	
	int[] arr = {10,1000,200,800,-900};
/*	//1 假设第一个元素是最大值
	int max = arr[0];
	//2:遍历数组
	for(int i = 1;i<arr.length;i++){
		 //3  用这个个最大值和后面的元素做大于比较
		if(arr[i]>max){
			//4如果后面的元素比这个最大值还大,那么后面的元素就是最大值
			max = arr[i];
		}
	}
	System.out.println(max);*/
	
	//1 假设第一个元素是最小值
	int min = arr[0];
	//2:遍历数组
	for(int i = 1;i<arr.length;i++){
		 //3  用后面的元素这个最小值和做小于比较
		if(arr[i]<min){
			//4如果后面的元素比这个最小值还小,那么后面的元素就是最小值
			min = arr[i];
		}
	}
	
	System.out.println(min);

/* 3添加新的元素**
* 需求:键盘录入5个学生成绩,并且放入数组,求和以及平均值
* 新需求:班里来了个新学生,要给数组插入一个新成绩?
* 1:把元素直接放在数组的最后面
*
* 思路:
* 1:创建一个新的数组,长度是旧数组长度+1
* 2:把旧数组的元素,按照顺序依次放入新的数组
* 3:把要添加的新的元素放入新数组的最后一位即可
*
*
*
*/
public static void main(String[] args)
// 1 开辟一个空间为5的数组
double[] score = new double[5];
double sum = 0;
double avg = 0;

	Scanner sc = new Scanner(System.in);
	for(int i = 0;i<score.length;i++){
		System.out.println("请输入第"+(i+1)+"个学生的成绩");
		//2 把学生成绩存入数组
		score[i] = sc.nextDouble();
		
	}
	
	
	//1:创建新数组
	double[] newScore = new double[score.length+1];
	//2:添加新的分数 80 进来,
	for(int i = 0;i<score.length;i++){// 注意这里是scored 长度;
		newScore[i] = score[i];
	}
	//3 把这个分数,放到数组的最后一位即可
	newScore[newScore.length-1] = 80;
	
	//4:打印新的数组
	for (double d : newScore) {
		System.out.println(d);
		sum+=d; //求和 
		
	}
	
	
	//求平均值
	avg = sum/newScore.length;
	
	System.out.println("总成绩:"+sum);
	System.out.print("平均值:");
	System.out.printf("%.2f",avg);	
	}
	}

4**数组添加元素
把元素放在数组中间的某个位置

 *  int[] arr = {10,20,30,40,60}
 *  要添加的元素:100
 *  位置:下标为3
 *  
 *  1:新建一个数组,长度是原数组长度+1
 *  2:先拿到下标为3的前面的元素,放到新数组按照0 1 2 顺序依次存放
 *  3:把要添加的元素100放入新数组下标为3的位置
 *  4:拿到下标为3的后面的元素,放到新数组按照 4 5  顺序依次存放
 */
public static void main(String[] args) {
	//1:原数组
	int[] arr ={10,20,30,40,60};
	//2:声明要添加的元素
	int num = 100;
	//3 要添加元素的位置:下标为3
	int index = 3;
	//4 :新建一个数组,长度是原数组长度+1   数组扩容
	int[] newArr = new int[arr.length+1];
	//5 拿到下标为3的前面的元素,放到新数组按照0 1 2 顺序依次存放
	for(int i = 0;i<index;i++){
		newArr[i] = arr[i];
	}
	
	//6  把要添加的元素100放入新数组下标为3的位置
	newArr[index] = 100;
	
	//7 拿到下标为3的后面的元素,放到新数组按照 4 5  顺序依次存放
	
	for(int i=index;i<arr.length;i++){
		newArr[i+1] = arr[i];
	}
	
	 //8:打印新的数组
	 for (int i : newArr) {
		System.out.println(i);
	}
	
}}

5.1删除数组 根据下标删数组
*
*
1.1:新建一个数组
1.2:删除下标为2的元素
1.3:找到下标为2的元素,后面的元素依次覆盖前面的元素
1.4:把最后一位赋值为0

      int[] arr = {10,20,30,40,50};
     public static void main(String[] args) {
	// 1.1:新建一个数组
	int[] arr = {10,20,30,40,50};
	// 1.2:删除下标为2的元素
	int index = 2;
	//1.3:找到下标为2的元素,后面的元素依次覆盖前面的元素
	for(int i = index;i<arr.length-1;i++){
		arr[i] = arr[i+1];
	}
	
	// 1.4:把最后一位赋值为0
	arr[arr.length-1] = 0;
	//1.5 打印删除元素的数组
	for (int i : arr) {
		System.out.println(i);
	}	}}

5.2 根据元素 删数组

  • 删除数组元素

    • 根据元素删除元素
    • 1:新建一个数组
    • int[] arr = {10,20,30,40,50}
    • 2:根据元素删除元素 删除 20这个元素
    • 3:用你要删除的元素和数组里面的每一个元素做==比较
    • 4:找到要删除的元素后,记录下当前元素的下标
    • 5:然后后面的下标依次向前移位
    • 6:把最后一位置为0
    public static void main(String[] args) {
     //1:新建一个数组
     int[] arr =  {10,20,30,40,50};
     //2:根据元素删除元素 删除  20这个元素
     int ele = 20;
     int index = -1;
     
     //3:用你要删除的元素和数组里面的每一个元素做==比较
     for(int i = 0;i<arr.length;i++){
     	if(ele==arr[i]){
     	  //4:找到要删除的元素后,记录下当前元素的下标
     		index = i;
     		break; //后面就不要比较了
     	}
     }
      //5:然后后面的下标依次向前移位
     for(int i = index;i<arr.length-1;i++){
     	arr[i] = arr[i+1];
     }
    
     //6:把最后一位置为0
     arr[arr.length-1] = 0;
     
     //7:打印删除的数组
     for (int i : arr) {
     	System.out.println(i);
     }    	}     }
    

6. 数组的前移后移
public class Demo7 {

/*
 * 需求
 *   创建一个数组
 *   String[] arr = {"A","B","C","D","E"};
 *   1:数组前移
 *     ABCDE--->BCDEA
 *   2:数组后移
 *     ABCDE--->EABCD  
 *     ****注意;首位和末位 元素的处理**** 
 */

public static void moveLeft(){
	
	//创建一个数组
     String[] arr = {"A","B","C","D","E"};
     //1:将下标为0,保存在一个临时的变量中
     String temp = arr[0];
     
     //2:循环向前移位
     for(int i = 0;i<arr.length-1;i++){
    	 arr[i] = arr[i+1]; 
     }
     //3 把第一个值放到最后一位
	  arr[arr.length-1] = temp;
	
	for (String s : arr) {
		System.out.println(s);
	}
	
}

public static void moveRight(){
	//创建一个数组
     String[] arr = {"A","B","C","D","E"};
     //1:先把最后一位保存在临时变量中
     String temp = arr[arr.length-1]; 
     
     //2:依次循环数组向右移位
     for(int i = arr.length-1;i>=1;i--){
    	 arr[i] = arr[i-1];
     }
     //3 将最后一位的值放入第一位
     arr[0] = temp;
     
     for (String s : arr) {
			System.out.println(s);
    }
	
}

public static void main(String[] args) {
	
	moveRight();
	}
	}

有时间的话 多重复敲一敲代码!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值