Java数组的扩容与缩减
Java数组的扩容
要求
实现动态的给数组添加元素效果,实现对数组的扩容,
1. 原始数组此次采取静态分配 byte[] arr = {1,2,3}
2. 增加用户需要扩容的元素,直接放在数组的最后 arr = {1,2,3,,x}
3. 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续 Y/N
思路分析
先繁后简
1. 定义初始化数组 byte[] arr = {1,2,3}; 下标 0~2
2. 定义一个新的数组 byte[] arrNew = new int[arr.length + i];
3. 遍历 arr 数组,依次将 arr 的元素拷贝到 arrNew 数组中
4. 将用户输入到的c扩容元素赋给 arrNew[arrNew.length-i] = 元素
5. 让 arr 指向arrNew;arr = arrNew;那么,原来arr数组就被销毁
先死后活
1. 创建一个 Scanner 接收用户的输入
2. 因为用户什么时候退出不确定,此次采取 do - while + break 来控制
优化
可以采取随机产生原始数组和添加的方式,但不太建议,因为不太贴合生活所需
缺点
1. 未使用函数的调用实现用户的继续操作
2. 该代码效率低,未使用链表的方式,适合初学者
3. 询问用户是否继续次操作,只能对 'N'字符做出准确的判断,对其他任何输入操作,
没有进行判断,都为true,此为大bug,解决此bug的其中一个方法就是 使用函数的调用实现用户的继续操作
4. 没有做出对任意位置的添加,在以后可以用链表做出此效果,且效率较高,代码简洁
代码以及需要强调的部分
import java.util.Scanner;
public class ArrayAdd
{
public static void main(String[] args)
{
byte[] arr = {
1, 2, 3 };
do
{
Scanner myScanner = new Scanner(System.in);
System.out.print("请输入需要添加的元素个数:");
byte len = myScanner.nextByte();
byte[] arrNew = new byte[arr.length + len];
for (byte i = 0; i < arr.length; i++)
{
arrNew[i