【发布时间】:2014-11-26 22:03:00
【问题描述】:
当我删除一个项目时,我将它从数组中删除,然后我打印一条消息,表明它已被删除。
我知道由于数组没有排序,删除一个项目的最简单方法就是将当前最后一个项目移动到它的位置,然后减少项目的数量。
我做错了什么?我该如何解决?
public static int removeBall(String[] hookPotentialArray, String[] nameBallArray, int[] ballWeightArray, int count) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter the name of the ball you would like to remove: ");
String name = keyboard.nextLine();
boolean ballRemoval = false;
for (int i = 0; i < count; i++) {
if (name.compareToIgnoreCase(nameBallArray[i]) == 0 && !ballRemoval) {
nameBallArray[i] = nameBallArray[count - 1];
ballWeightArray[i] = ballWeightArray[count - 1];
hookPotentialArray[i] = hookPotentialArray[count - 1];
ballRemoval = true;
count--;
System.out.println("The ball you selected to be removed "
+ "has been removed.");
System.out.println("");
}
}
return count;
}
【问题讨论】:
-
由于 Java 数组不是动态的,我不知道你在问什么。
-
有什么问题?这是否无法编译,是否崩溃,是否运行但没有预期的行为,是什么?
-
@letsjak 在您对这个问题的suggested edit 中,您尝试将
<替换为HTML 字符文字。一般来说,您不必这样做,因为它会在编辑帖子时降低可读性。 -
(1) 你应该使用
break退出搜索 (2) 你应该在删除最后一项时添加特殊检查 (3) 你应该记住,java 数组实际上不会缩小,所以你需要保持count始终正确并在使用中