数组扩容
一、思路:
新建一个数组,将以前的数组值依次放入新数组中,在新数组中添加元素;
让以前数组等于新数组,以前数组的数据空间销毁;
数组反转同理
二、要求:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java
1.原始数组使用静态分配 int[]arr={1,2,3}
2.增加的元素4,直接放在数组的最后 arr={1,2,3,4}
3.用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
三、思路分析
- 定义初始数组 int[]arr={1,2,3}//下标 0-2
- 定义一个新的数组 int[]arrNew=newint[arr.length+1];
- 遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
- 将 4 赋给 arrNew[arrNew.length- 1] = 4;把 4 赋给arrNew 最后一个元素
- 让 arr 指向 arrNew; arr=arrNew; 那么 原来arr数组就被销毁
- 创建一个 Scanner可以接受用户输入
- 因为用户什么时候退出,不确定,用 do-while+break来控制
四、代码实现:
package com.example;
import java.util.Scanner;
public class shuzukuorong {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = {1, 2, 3};
do{
//新建数组
int[] newarr = new int[arr.length + 1];
//存入数据
for (int i = 0; i < arr.length; i++) {
newarr[i] = arr[i];
}
System.out.print("请输入要扩容的元素:");
newarr[arr.length] = sc.nextInt();
//让arr指向newarr
arr = newarr;
System.out.println("======arr扩容后元素情况=====");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
//问用户是否继续
System.out.println("是否继续添加y/n");
char y = sc.next().charAt(0);
if (y == 'n') {
break;
}
}while(true);
System.out.println("你退出了添加...");
}
}
在编写代码的过程中,我用到了do-while循环,增进了理解;
在一步步的测试中,我逐步按要求完善代码,体现了面向对象的编程思想。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理