为了账号安全,请及时绑定邮箱和手机立即绑定

从左边向数组添加新元素在java中向右移动一步

从左边向数组添加新元素在java中向右移动一步

Helenr 2021-11-03 16:46:44
我的问题是:我希望向数组中添加一个元素。由于 'createArray' 方法方法 'addElementsToArray' 将新元素添加到 'this.array[0]' 的位置,数组长度为 3, 如果使用数组中的其余位置,则它们向右移动一步,使第一个位置为空对于新元素。如果我的数组长度等于 10 或 100 怎么办?无论数组的长度如何,有没有办法使用更少的代码行。谢谢private int[] array;public createArray(int m){    this.array = new int[m];}public void addElementsToArray(int element){        try {            for (int i=0; i<=this.getArray().length; i++) {                if (this.getArray()[i] == 0) {                    this.getArray()[i] = element;                    System.out.println("1");                    break;                }else if(this.getArray()[i] != 0 && this.getArray()[i + 1] == 0) {                    int vault = this.getArray()[i];                    if (this.getArray()[i + 1] == 0) {                        this.getArray()[i + 1] = vault;                        this.getArray()[i] = element;                        System.out.println("2");                        break;                    }                }else if(this.getArray()[i] != 0 && this.getArray()[i + 1] != 0) {                    if (this.getArray()[i + 2] == 0) {                        int vault = this.getArray()[i];                        this.getArray()[i + 2] = this.getArray()[i + 1];                        this.getArray()[i + 1] = vault;                        this.getArray()[i] = element;                        System.out.println("3");                        break;                    }                }            }        }catch(ArrayIndexOutOfBoundsException e){            System.out.println("This Stack is Full");        }    System.out.println(Arrays.toString(this.getArray()));}
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

这个想法是从第一个元素到最后一个循环遍历数组,寻找第一次出现的 0。如果没有找到,则数组已满。如果这样做,请使用System.arraycopy将所有内容从 0 向右移动到标识的位置 1,然后在位置 0 处插入新元素。


public void addElementsToArray(int element){  

  for(int i=0; i<array.length; i++)

  {

    if(array[i] == 0)

    {

      System.arraycopy(array, 0, array, 1, i);

      array[0] = element;

      return;

    }

  }

  throw new IllegalStateException("Array is full");

}


查看完整回答
反对 回复 2021-11-03
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

出于您的目的,数组不是用户的最佳数据结构,而是使用队列。


LinkedList<Integer> q = new LinkedList<>(); // LinkedList implements Queue interface

q.addFirst(5);        // will add element 5 at first position

q.addLast(6);        // will add element 6 at lastposition

int f = q.pollFirst();        // will give element at first position

int l = q.pollLast();        // will give element at lastposition


int ele= q.get(0);    // will give element at 0 index

Queue 用于在队列末尾插入元素并从队列开头删除元素。它遵循先进先出的概念。


查看完整回答
反对 回复 2021-11-03
  • 2 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信