簡體   English   中英

從 Java 中的數組中刪除元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM