Day41-数组增删改查

预习,回顾之前学过的内容

  • 数组增删改查
import java.util.Scanner;

public class ExamCURD {

	static Scanner input = new Scanner(System.in);
	static int size = 0;//元素有效个数
	static int [] nums = new int[10];
	static {
		System.out.println("请输入数组元素有效个数:");
		size = input.nextInt();
	}
	
	public static void main(String[] args) {
		while (true) {
			
			System.out.println("**********数组增删改查小DEMO**********");
			System.out.println("请选择:【0】退出");
			System.out.println("【1】增加数组元素【2】删除数组元素");
			System.out.println("【3】修改数组元素【4】查询数组元素");
			
			start();
		}
		
	}
	
	public static void start() {
		
		int choose = input.nextInt();

		switch (choose) {
		case 0:
			System.exit(0);
		case 1:
			
			System.out.println("请输入增加元素位置:");
			int position = input.nextInt();
			System.out.println("请输入要增加元素的值");
			int value = input.nextInt();
			add(position,value);
			printArray(position);
			break;
		case 2:
			System.out.println("请输入要删除元素位置[下标从0开始]:");
			int position1 = input.nextInt();
			delete(position1);
			printArray(position1);
			break;
		case 3:
			System.out.println("请输入要修改元素位置[下标从0开始]:");
			int position2 = input.nextInt();
			System.out.println("请输入要修改元素值:");
			int value2 = input.nextInt();
			replace(position2,value2);
			printArray(position2);
			break;
		case 4:
			System.out.println("请输入要查询元素位置[下标从0开始]:");
			int position3 = input.nextInt();
			int result=search(position3);
			System.out.println("查询结果:"+result);
			printArray(position3);
			break;
		default:
			break;
		}
	}
	
	//增加
	public static void add(int position,int value) {
		
		//进行扩容
		if (position >= size || size > 5) {
			System.out.println("数组将进行扩容...");
			//灵感来源于底层ArrayList数组扩容
			int[] newNums = new int[(int) (size+size*0.5)];
			System.arraycopy(nums, 0, newNums, 0, nums.length);
			//地址替换
			nums = newNums;
		}
		
		//移动元素进行而插入新的值
		for(int i=size-1;i>position;i--){
			//元素依次后移
            nums[i]=nums[i-1];
        }
		//将值插入
        nums[position-1]=value;
        //有效长度++
        size++;
	}
	
	
	
	//删除
	public static void delete(int position) {
		size = nums.length;
		if (position < 0 || position > size) {
			System.out.println("输入位置有误,请输入0~"+size+"之间的值");
			return;
		}
		for (int i = position; i < nums.length-1; i++) {
			nums[i] = nums[i+1];
		}
		size--;
	}
	
	//修改
	public static void replace(int position,int value) {
		size = nums.length;
		if (position < 0 || position > size) {
			System.out.println("输入位置有误,请输入0~"+size+"之间的值");
			return;
		}
		nums[position] = value;
		
	}
	
	//查询
	public static int search(int position) {
		size = nums.length;
		if (position < 0 || position > size) {
			System.out.println("输入位置有误,请输入0~"+size+"之间的值");
			return -1;
		}
		return nums[position];
	}
	
	//打印
	public static void printArray(int position){
		System.out.println("所有元素如下:");
        for(int i=0;i<nums.length;i++){
            System.out.print(nums[i]+" ");
        }
        System.out.println();
    }

}
  • 杨辉三角
public class TestYH {

	public static void main(String[] args) {
		//杨辉三角
		/*
		 &&&&1
		 &&&1 1
		 &&1 2 1
		 &1 3 3 1
		 1 4 6 4 1
		 
		 1
		 11
		 121
		 1331
		 14641
		 */
		
		int rows = 5;
		int [][] yh = new int[rows][];
		
		/*
		 yh[0] = new int[1];
		 yh[1] = new int[2];
		 yh[2] = new int[3];
		 */
		
		//创建多个不同长度的数组
		for (int i = 0; i < rows; i++) {
			yh[i] = new int[i+1];
		}
		//完成初始赋值(每行 行首 行尾都为1)
		for (int i = 0; i < yh.length; i++) {
			yh[i][0] = 1;
			yh[i][i] = 1;			
		}
		//计算       2    2<5   234  
		for (int i = 2; i < yh.length; i++) {
			for (int j = 1; j < i; j++) {
				//当前位置=上一行的同列+上一行同列前面的值
				yh[i][j] = yh[i-1][j] + yh[i-1][j-1];
			}
		}
		
		//打印倒三角行填充
		for (int i = 0; i < yh.length; i++) {
			//j=4 4>3 --
			for (int j = rows - 1; j > i; j--) {
				System.out.print(" ");
			}
			
			//当前元素
			for (int j = 0; j < yh[i].length; j++) {
				System.out.print(" "+yh[i][j]+" ");
			}
			//换行
			System.out.println();
		}
	}

}
posted @ 2021-08-21 21:30  CN_Darren  阅读(39)  评论(0)    收藏  举报