java数组的元素删除问题

//如何实现删除数组
public class arraydelete {

/**
* @param args
*/
public static void main(String[] args) {
String[] array={"iPhone3GS","iPhone4","iPhone4S","iPhone5"};
int index=-1;
for(int i=0;i<array.length;i++){
//查找插入位置
if(array[i].equals("iPhone3GS")){
index=i;
break;
}
if(index!=-1){
//array[index]="iPhone4天下无敌";
for(int j=index;j<array.length-1;j++){
array[j]=array[j+1];
}
array[array.length-1]=null;

}else{
System.out.println("数组已满");
}
for(int k=0;k<array.length;k++){
System.out.println(array[k]);
}

}
}
}
不能实现是什么原因,请详解

第1个回答  2013-12-13
1.java中数组不太好用,尽量用List。
2.array[array.length-1]=null,你这个语句只是将数组位置值置为null,不是删除数组元素,还是会输出。

3.你第一个循环要用continue,不能用break,这是无法运行的最主要问题。本回答被提问者采纳
第2个回答  2013-12-13

最好是使用List

public static void main(String[] args) {

String[] arr = { "IPhone3GS", "IPhone4", "IPhone4S", "IPhone5" };

String remove = "IPhone3GS";

ArrayList<String> temp = new ArrayList<String>(Arrays.asList(arr));

boolean flag = false;

for (String str : temp) {

if (str.equals(remove)) {
temp.remove(str);
flag = true;
break;
}
}

if (flag) {
arr = temp.toArray(new String[arr.length - 1]);
} else {
System.out.println("未找到 '" + remove + "'");
}

System.out.println(Arrays.toString(arr));

}

第3个回答  2013-12-13
//查找插入位置
if(array[i].equals("iPhone3GS")){
index=i;//i=0
break;
}
当你执行到此处 第一次循环就会进入到此if判断 然后break 跳出循环了。跳出循环所以循环里的其他代码就不会被执行了
第4个回答  2013-12-13
if(array[i].equals("iPhone3GS")){
index=i;
break;
}
这个break跳出循环了
第5个回答  2013-12-13
看了一下你的代码,按照你代码中想表达的逻辑,你第一个for循环结束的位置,应该是在第一个if结束之后。
相似回答