猿问

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

我的问题是:我希望向数组中添加一个元素。

由于 '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()));

}


Helenr
浏览 155回答 2
2回答

繁星点点滴滴

这个想法是从第一个元素到最后一个循环遍历数组,寻找第一次出现的 0。如果没有找到,则数组已满。如果这样做,请使用System.arraycopy将所有内容从 0 向右移动到标识的位置 1,然后在位置 0 处插入新元素。public void addElementsToArray(int element){&nbsp;&nbsp;&nbsp; for(int i=0; i<array.length; i++)&nbsp; {&nbsp; &nbsp; if(array[i] == 0)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; System.arraycopy(array, 0, array, 1, i);&nbsp; &nbsp; &nbsp; array[0] = element;&nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; }&nbsp; }&nbsp; throw new IllegalStateException("Array is full");}

斯蒂芬大帝

出于您的目的,数组不是用户的最佳数据结构,而是使用队列。LinkedList<Integer> q = new LinkedList<>(); // LinkedList implements Queue interfaceq.addFirst(5);&nbsp; &nbsp; &nbsp; &nbsp; // will add element 5 at first positionq.addLast(6);&nbsp; &nbsp; &nbsp; &nbsp; // will add element 6 at lastpositionint f = q.pollFirst();&nbsp; &nbsp; &nbsp; &nbsp; // will give element at first positionint l = q.pollLast();&nbsp; &nbsp; &nbsp; &nbsp; // will give element at lastpositionint ele= q.get(0);&nbsp; &nbsp; // will give element at 0 indexQueue 用于在队列末尾插入元素并从队列开头删除元素。它遵循先进先出的概念。
随时随地看视频慕课网APP

相关分类

Java
我要回答