gpt4 book ai didi

java - 在 Java 运行时从数组中删除元素

转载 作者:搜寻专家 更新时间:2023-11-01 01:31:14 25 4
gpt4 key购买 nike

有没有办法在运行时从数组中删除元素?

例如:

int[] num =  {8, 1, 4, 0, 5};

Output:
Enter the Index: 0
1, 4, 0, 5
Enter the Index: 3
1, 4, 0
Enter the Index: 1
4, 0;

我知道数组一旦初始化就无法调整其长度,在这种示例问题中,使用 ArrayList 更为实用。但是,有没有办法只使用一个数组来解决这类问题?

我设法删除了一个元素并通过创建新数组并在其中复制原始数组的值来显示数组 -1。但问题是,在输出的下一次迭代中,我仍然可以删除一个元素,但大小不会改变。

是这样的:

int[] num =  {8, 1, 4, 0, 5};

Output:
Enter the Index: 0
1, 4, 0, 5 // in the first loop it goes as I want it.
Enter the Index: 2
1, 4, 5, 5 // this time array's length is still 4 and just duplicates the last value
Enter the Index: 1
1, 5, 5, 5 // length is still the same and so on.

这是我从数组中删除元素的代码:

public static int[] removeElement(int index, int[] n) {

int end = n.length;

for(int j = index; j < end - 1; j++) {
n[j] = n[j + 1];
}
end--;

int[] newArr = new int[end];
for(int k = 0; k < newArr.length; k++) {
newArr[k] = n[k];
}

displayArray(newArr);

return newArr;
}

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] num = {8, 1, 4, 0, 5};

for(int i = 0; i < num.length; i++) {
System.out.print("Enter the Index: ");
int index = input.nextInt();
removeElement(index, num);
}
}

public static void displayArray(int[] n) {
int i = 0;
for(; i < n.length - 1; i++) {
System.out.print(n[i] + ", ");
}
System.out.print(n[i]);
}

有没有关于如何在数组上执行此操作的技巧?或者我真的必须使用 ArrayList 吗?

最佳答案

您正在丢弃 removeElement 返回的新数组。

将循环更改为:

for(int i = 0; i < num.length; i++) {
System.out.print("Enter the Index: ");
int index = input.nextInt();
num = removeElement(index, num);
}

关于java - 在 Java 运行时从数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865014/

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