【发布时间】:2022-01-13 21:14:18
【问题描述】:
public void removeElement( String candidate ) {
// hitta elementet som ska tas bort och placera det sist i arrayen
for( int i = 0; i < carRegister.length; i++ ) {
String s = carRegister[i];
if( s.equals( candidate ) ) {
// byt plats med sista elementet
String temp = carRegister[carRegister.length-1];
carRegister[carRegister.length-1] = s;
carRegister[i] = temp;
}
}
// Ta bort elementet genom att kopiera över alla utom sista elementet till en ny array
String[] tempArray = new String[carRegister.length-1];
for( int i = 0 ; i < carRegister.length-1; i++ ) {
tempArray[i] = carRegister[i];
}
// den nya arrayen tilldelas arrayen carRegister
carRegister = tempArray;
}
我的代码问题是,如果用户输入(候选)与数组中的任何元素都不匹配,我找不到阻止从第二个 for 循环复制的方法。如您所见,即使输入是“特斯拉”,它也会删除马自达。在这种情况下,我不知道如何阻止它删除数组中的最后一个元素。
【问题讨论】:
-
为什么
Mazda被移动到第一个索引?在截断之前在末尾存储Volvo有什么意义?为什么不在if内复制? -
不幸的是,这是我打算使用的布局。执行程序希望这样。但是为了回答您的第一个问题,马自达被移至第一个索引,因为它与沃尔沃交换了位置。所以沃尔沃被移到最后一个索引,马自达第一个。