Java之数组扩容

举报
兮动人 发表于 2021/10/10 10:10:13 2021/10/10
【摘要】 Java之数组扩容

数组添加/扩容

  • 要求:实现动态的给数组添加元素效果,实现对数组扩容。ArrayAdd.java
  1. 原始数组使用静态分配 int[] arr = {1,2,3}
  2. 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
    ArrayAdd02.java
  • 思路分析
    1. 定义初始数组 int[] arr = {1,2,3}//下标0-2
    2. 定义一个新的数组 int[] arrNew = new int[arr.length+1];
    3. 遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
    4. 将 4 赋给 arrNew[arrNew.length - 1] = 4;4赋给arrNew最后一个元素
    5. 让 arr 指向 arrNew ; arr = arrNew; 那么 原来arr数组就被销毁
  • 代码实现:
	  int[] arr = {1,2,3};
      int[] arrNew = new int[arr.length + 1];
      //遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
      for(int i = 0; i < arr.length; i++) {
          arrNew[i] = arr[i];
      }
      //把4赋给arrNew最后一个元素
      arrNew[arrNew.length - 1] = 4;
      //让 arr 指向 arrNew,
      arr = arrNew;
      //输出arr 看看效果
      System.out.println("====arr扩容后元素情况====");
      for(int i = 0; i < arr.length; i++) {
          System.out.print(arr[i] + "\t");
      }

在这里插入图片描述
在这里插入图片描述

  1. 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n
  1. 创建一个 Scanner可以接受用户输入
  2. 因为用户什么时候退出,不确定,使用 do-while + break来控制

代码实现:

	Scanner myScanner = new Scanner(System.in);
	//初始化数组
	int[] arr = {1,2,3};
	
	do {
		int[] arrNew = new int[arr.length + 1];
		//遍历 arr 数组,依次将arr的元素拷贝到 arrNew数组
		for(int i = 0; i < arr.length; i++) {
			arrNew[i] = arr[i];
		}
		System.out.println("请输入你要添加的元素");
		int addNum = myScanner.nextInt();
		//把addNum赋给arrNew最后一个元素
		arrNew[arrNew.length - 1] = addNum;
		//让 arr 指向 arrNew, 
		arr = arrNew;
		//输出arr 看看效果
		System.out.println("====arr扩容后元素情况====");
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "\t");
		}
		//问用户是否继续
		System.out.println("是否继续添加 y/n");
		char key = myScanner.next().charAt(0);
		if( key == 'n') { //如果输入n ,就结束
			break;
		}			
	}while(true);
	
	System.out.println("你退出了添加...");

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。