我正试图根据方法的参数从数组中删除元素。如果参数是最后一个元素的位置,我不能使用for循环并最终指定if语句来满足这个条件。同时尝试在删除后返回该位置的当前名称。我已经测试了以下代码。
我想看看是否有更好的方法来产生同样的结果,而不需要额外的if语句。我试着查找arrays类,但没有任何静态方法似乎也有帮助。如果有更好的方法,请提供建议。谢谢。
public class ArrayTester {
public static String[] array1 = new String[100];
public static void main(String[] args) {
remove(50);
System.out.println(remove(50));
}
public static String remove(int name) {
if(name == 99){
array1[name] = null;
return array1[name];
}
else if (name >= 0 && name < 99){
for (int i=name; i < array1.length-1; i++){
array1[i] = array1[i+1];
}
return array1[name];
}
return null;
}
}
5条答案
按热度按时间wsewodh21#
还有arraylist??
输出:
使用arraylist更容易,不是吗?
x759pob22#
看看你的代码,你似乎想要这样的东西-
t3psigkw3#
q35jwt9p4#
我觉得你最好还是用数组列表。数组并不是为你所做的事情而设计的。但是您也可以在所需的位置将值设置为null,然后在数组上运行java.util.arrays.sort方法。类似于这样的事情(我正在做,但这很接近):
这将给您留下一个排序数组,但您已经将它们从原始索引中移出了,所以这对您来说可能重要,也可能不重要。
另一种选择是简单地添加
if (array1[index] != null)
条件到处理该数组的所有代码。这样就不必在数组中来回移动值,代码只需跳过它运行到的任何空值。g2ieeal75#
通过排除
if
. 不幸的是,循环必须保持-数组提供连续存储,因此如果要删除数组中间的项,则需要移动数据。