gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:01:33 25 4
gpt4 key购买 nike

我的问题是:我想向数组添加一个元素。
由于'createArray'方法,数组长度为3
方法“addElementsToArray”将新元素添加到“this.array[0]”的位置(如果使用数组中的其余位置)
它们向右移动一步,使第一个位置为新元素为空。
如果我的数组长度等于 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()));
}

最佳答案

这个想法是从第一个元素到最后一个元素循环遍历数组,查找第一次出现的 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");
}

关于java - 在java中向数组添加新元素从左向右移动一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52693988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com