[英]Removing elements from an array in Java
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 循環復制的方法。 如您所見,即使輸入是“特斯拉”,它也會刪除馬自達。 在這種情況下,我不知道如何阻止它刪除數組中的最后一個元素。
為什么不創建一個變量來存儲您是否找到了候選人? 然后,如果變量說您沒有找到它,則可以避免第二個循環。 例如,
...
boolean foundCandidate = false; // initialized to "did not find it"
for( int i = 0; i < carRegister.length; i++ ) {
String s = carRegister[i];
if( s.equals( candidate ) ) {
// changed if found
foundCandidate = true;
...
// now, you can avoid this loop (and modifying carRegister) if it is not necessary
if( foundCanidate) {
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.