2017-09-16 45 views
-1

我試圖顯示我已經做出的數組中的元素數量。它是一個具有字符串作爲數據類型的常規數組。如果可以顯示數組中的元素總數,代碼是否與ArrayList的類似?如何在數組中顯示元素數量?

String[] list = new String[14]; 
    list = new String[] {"Bob", "Sal", "Jimmy" ,"John"}; 


    list = insert(list, "Joe", 0); 
    list = insert(list, "Manny", list.length); 
    list = insert(list, "Joey", list.length/2); 



    System.out.println(Arrays.toString(list)); 

} 

public static String[] insert(String[] original, String value, int k) { 
    String[] copy = new String[original.length + 1]; 


    for(int i=0; i<k; i++) 
    { 
     copy[i] = original[i]; 
    } 


    copy[k] = value; 


    for(int i=k; i<original.length; i++) 
    { 
     copy[i+1] = original[i]; 
    } 


    return copy; 
} 
+1

Array中的元素總數:'array.length' – Andreas

+1

創建一個包含14個元素的數組,只需將它扔掉,並用下一行中的4個元素數組替換它,是什麼意思? – Andreas

+0

[如何找到字符串數組的長度?]可能的重複(https://stackoverflow.com/questions/4862092/how-to-find-length-of-a-string-array) – Dukeling

回答

0

如果可能,我建議您使用ArrayList,因爲使用方法size()會更容易。如果你必須使用一個數組,因爲數組已經大小,你可以檢查一個for循環,數組的哪個插槽是!=爲空,並將它們添加到計數器。

+1

問題中沒有提到不計數空值,並且示例中的數組沒有空值*(忽略立即丟棄的垃圾14元素數組)* 。 – Andreas

1

如前所述,要使用的最佳Array類型是通過ArrayList.add(index, valueToAdd)方法將元素插入到該數組中的List或ArrayList。當然可以用基本的數組來完成,但是您已經注意到需要更多的工作來完成這項任務。一種可能的方式可能是這樣的:

public static String[] insertStringArrayElement(String[] original, String value, int atIndex) { 
    // Make sure the supplied index (k) is within bounds 
    if (atIndex < 0 || atIndex > original.length) { 
     throw new IllegalArgumentException("\ninsertArrayElement() Method Error! " 
            + "The supplied index value is invalid (" 
            + atIndex + ")!\n"); 
    } 

    String[] tmp = new String[original.length + 1]; 
    int elementCount = 0; //Counter to track original elements. 
    for(int i = 0; i < tmp.length; i++) { 
     // Are where we want to insert a new elemental value? 
     if (i == atIndex) { 
      tmp[i] = value; // Insert the new value. 
      i++;   //Increment i so to add the orininal element. 
      // Make sure we don't go out of bounds. 
      if (i < original.length) { 
       tmp[i] = original[elementCount]; // Add original element. 
      } 
     } 
     // No we're not... 
     else { 
      tmp[i] = original[elementCount]; // Add original element. 
     } 
     elementCount++; // Increment counter for original element tracking. 
    } 
    return tmp; // Return our new Array. 
} 

由於安德烈亞斯已經非常和善指出,在原貼的代碼,你已經宣佈的列表字符串數組並初始化它包含14個元素,但在非常下一行你重新初始化這個數組只包含4個元素。首先初始化爲氧,時間,記憶,精力等的浪費,因爲你可能只是聲明和初始化這樣的數組:

String[] list = new String[] {"Bob", "Sal", "Jimmy" ,"John"}; 

或更好:

String[] list = {"Bob", "Sal", "Jimmy" ,"John"}; 

只是要記得。