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();
}
}
}

浙公网安备 33010602011771号