我是Java编程的新手。我想知道在删除所选元素后如何移动剩余的元素。问题是索引的结尾显示了与上一个索引相同的元素。我只想要输出:{1, 44, 5, 34, 8, 10, 11, 100, 0, 11, 0}
。
我的实际输出是:{1, 44, 5, 34, 8, 10, 11, 100, 0, 11, 11}
。
我会告诉你我的实际代码。我不需要ArrayList或List工作。我想在没有它们的情况下进行测试。
for (int i = indexToDelete; i < array.length-1; i++) {
array[i] = array[i+1];
size--;
}
for (int i = 0; i < array.length; i++) {
System.out.println("The element at index " + i + ": " + array[i]);
} //END for()
System.out.println(size);
答案 0 :(得分:2)
您无法直接从已分配的数组中删除该项目。您有两个选择:
array = Arrays.copyOf(array, array.length - 1);
- 这创建了一个副本,删除了最后一个元素#1的样本:
int[] array = {1,2,3};
int indexToDelete = 1;
for (int i = indexToDelete; i < array.length-1; i++) {
array[i] = array[i+1];
}
array = Arrays.copyOf(array, array.length - 1);
for (int i = 0; i < array.length; i++) {
System.out.println("The element at index " + i + ": " + array[i]);
}
输出:
The element at index 0: 1
The element at index 1: 3
答案 1 :(得分:0)
如果要将最后一个元素设置为零,则应将最后一个元素设置为零:
for (int i = indexToDelete; i < array.length-1; i++) {
array[i] = array[i+1];
size--;
}
array[array.length-1] = 0;
您可能应该检查您的阵列是否实际包含任何元素。
答案 2 :(得分:0)
您可以制作没有最后一个元素的数组副本:
array = Arrays.copyOf(array, array.length - 1);
答案 3 :(得分:0)
您可以保留另一个int
变量来存储数组的当前大小(删除元素后)。
或者,您可以从末尾删除元素并使用Arrays.copyOf(int \[\], int)
最重要的是,无论您使用哪两种方法,如果要从中间删除元素,您可以考虑将最后一个元素复制到已删除元素的位置,而不是将所有后续元素移位1。这对你有用,那么它会更有效率。