gpt4 book ai didi

java - 如何移动数组中的元素?

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

我正在尝试创建一个方法来搜索“data”数组以查找字符串“elt”。如果存在,会将“elt”之后的所有元素向左移动一位(以覆盖“elt”所在的单元格)。

我能够找到“elt”的所有实例并将它们设置为空,但我遇到了将“elt”之后的所有元素在数组中向下移动一个空格的问题。下面的代码是我到目前为止所拥有的。

public class Bag<T> implements Iterable<T> {

private final int MAXLEN = 3;
private int size;
private T[] data; // array

public T remove(T elt) {

for (int i=0; i<data.length; i++) {
if ("elt".equals(data[i]) ) {
data[i] = null;

for (i++; i < data.length; i++) {
data[i] = data[i-1];
}
}
}
public static void main(String[] args) {
Bag<String> sbag = new Bag<String>();

sbag.add("Noriko");
sbag.add("Buddy");
sbag.add("Mary");
sbag.add("Peter");
sbag.add("elt");
sbag.add("hello");

Iterator<String> it = sbag.iterator();
while (it.hasNext()) {
String val = it.next();
System.out.println(val);
}

sbag.remove("elt");

Iterator<String> it2 = sbag.iterator();
while (it2.hasNext()) {
String val = it2.next();
System.out.println(val);
}
}

当我运行该代码时,我得到:

纪子伙伴玛丽彼得埃尔特你好纪子伙伴玛丽彼得空

但是,我期待

纪子伙伴玛丽彼得埃尔特你好纪子伙伴玛丽彼得你好

谁能告诉我如何修复代码,以便数组中的其余项目向下移动?我认为问题出在我的删除方法中。

最佳答案

如果我正确地理解了您想要实现的目标,那么您正在以错误的方式转变:

public T remove(T elt) {

for (int i=0; i<data.length; ++i) {
if (elt.equals(data[i]) ) {
data[i] = null;
for (++i; i < data.length; ++i) {
data[i-1] = data[i];
}
break;
}
}

`

关于java - 如何移动数组中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225369/

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