请尽可能难以理解
我有一个50大小的jbuttons数组,对于这个例子生病使用7我有1 2 3 4 6 7但不是5的jbutton对象。这些都打印在屏幕上。我想删除这些jbuttons,但最多5个按钮被删除,而最后两个按钮不被删除。
for(int i = 1; i < 51; i++){
if(seat.buttonArray[i] == null){
remove(seat.buttonArray[i]);
seat.buttonArray[i] = null;}
}
答案 0 :(得分:2)
假设您希望在删除后更改后面的索引,则无法从array
删除元素。为此,您应该使用List
:
Iterator buttonIterator = seat.buttonList.iterator();
while (buttonIterator.hasNext()) {
Object button = buttonIterator.next(); //or more specific type, if your list was generified
if (button == null) { //or some other criteria, wrote this just as an example
buttonIterator.remove();
}
}
如果必须使用array
,您有两种选择:
seat.buttonArray[i]
设置为null
值,表示已将其删除; 答案 1 :(得分:1)
您可以将值存储在临时数组中,然后将所需内容复制回原始数组中。与此有点类似:
int myArray[50];
int temp[50];
int good;
for (int i = 0; i < 50; i++) {
myArray[i] = i;
}
for (int i = 0; i < 50; i++) {
temp[i] = myArray[i];
}
good = 0;
for (int i = 0; i < 50; i++) {
if (i < 10) {
} else {
myArray[good] = temp[i];
good += 1;
}
}
看起来比我初想的还要糟糕......但它基本上就是你想要的。