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 回圈復制的方法。如您所見,即使輸入是“特斯拉”,它也會洗掉馬自達。在這種情況下,我不知道如何阻止它洗掉陣列中的最后一個元素。
uj5u.com熱心網友回復:
為什么不創建一個變數來存盤您是否找到了候選人?然后,如果變數說您沒有找到它,則可以避免第二個回圈。例如,
...
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) {
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377987.html
