2013-01-20 355 views
1

我不知道這是否正確,所以我需要你的評論傢伙。我有一系列員工姓名。它將顯示在控制檯上,然後會提示用戶是否要插入其他名稱。該名稱應添加到數組的末尾(索引4),並將再次顯示數組,但已添加新名稱。我怎麼做?順便說一句,這是我的代碼。我被卡住了。我甚至不知道是否寫入null是有效的。如何添加一個元素到我的數組的末尾?

public static void list() { 
    String[] employees = new String[5]; 
    employees[0] = "egay"; 
    employees[1] = "ciara"; 
    employees[2] = "alura"; 
    employees[3] = "flora"; 
    employees[4] = null; 

    for(int i = 0; i < employees.length; i++) { 
     System.out.println(employees[i]); 
    } 
} 
public static void toDo() { 
    Scanner input = new Scanner(System.in); 
    System.out.println("What do you want to do?"); 
    System.out.println("1 Insert"); 
    int choice = input.nextInt(); 

    if(choice == 1) { 
     System.out.print("Enter name: "); 
     String name = input.nextLine(); 
+0

您應該使用其他結構,例如java.util.ArrayList,而不是數組。 數組的大小是不可變的,但ArrayList是可變的。 如果你只想使用數組,你必須重新創建數組,但是我的東西 另一個結構是最好的選擇 –

+0

你應該使用'ArrayList '。 – SLaks

+0

這基本上是一樣的問題http://stackoverflow.com/questions/7939154/how-to-add-elements-in-array – 808sound

回答

5

你基本上不能。

陣列在構建時具有固定大小。你可能創建一個具有所需大小的新陣列,將所有現有元素複製到它,然後新元素...或者您可以使用List<String>實現,而不是如ArrayList<String>。我強烈建議後一種方法。

我建議您閱讀collections tutorial以瞭解有關Java中各種可用集合的更多信息。

另請注意,您目前剛剛在list方法中獲得了本地變量。您可能需要代替字段。理想情況下是一個實例字段(例如在名爲Company或類似的類中) - 但如果您只是試驗,那麼您現在可以使用static字段。靜態字段表示全局狀態和一般的可變值,一個壞主意,但它看起來像此刻所有的方法都是靜態的太...

1

數組大小是固定的。一旦你聲明你不能修改它的大小。使用收集java.util.Listjava.util.Set。示例ArrayList這是動態可增長的並且由數組支持。

1

如果您確實需要使用數組,那麼您將不得不通過使用中間副本來增加數組的大小。

String[] array = new String[employees.length + 1]; 
System.arraycopy(employees, 0, array, 0, employees.length); 
array[employees.length] = newName; 
employees = array; 

但是,最好的方法是使用List實現。

0

這取決於用戶是否可以輸入4個以上的員工姓名。如果他們可以使用ArrayList是更好的選擇。此外,僱員變量需要是您的類的靜態屬性,因爲它被用於靜態方法。

private static String[] employees = new String[5]; 

static { 
    employees[0] = "egay"; 
    employees[1] = "ciara"; 
    employees[2] = "alura"; 
    employees[3] = "flora"; 
    employees[4] = null; 
} 

public static void list() { 
    for(int i = 0; i < employees.length; i++) { 
     System.out.println(employees[i]); 
    } 
} 

public static void addEmployeeName(String name, int index) { 
    employees[index] = name; 
} 
0

這裏使用的是靜態數組,其固定在creation.I的時候認爲你應該使用 java.util.ArrayList中將爲您提供動態數組的設施。

相關問題