如何在数组末尾添加元素?

时间:2013-01-20 14:04:17

标签: java arrays

我不知道这是不对的,所以我需要你的评论。我有一系列员工姓名。它将显示在控制台上,然后将提示用户是否要插入其他名称。该名称应添加到数组的末尾(索引4),并将再次显示该数组,但已添加新名称。我怎么做?顺便说一下,这是我的代码。而且我被困住了。我甚至不知道写有效是否有效。

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();

5 个答案:

答案 0 :(得分:5)

你基本上不能。

阵列在构建时具有固定的大小。您可以创建一个具有所需大小的新数组,将所有现有元素复制到其中,然后复制新元素......或者您可以使用List<String>实现,例如{{ 1}}。我强烈建议采用后一种方法。

我建议您阅读collections tutorial以了解有关Java中可用的各种集合的更多信息。

另请注意,您目前只在ArrayList<String>方法中获得了 local 变量。你可能想要一个字段。理想情况下是一个实例字段(例如,在一个名为list或类似的类中) - 但如果您只是在进行实验,那么您现在可以使用Company字段。静态字段代表全局状态,对于可变值通常是一个坏主意,但它看起来好像你的所有方法都是静态的......

答案 1 :(得分:1)

阵列的大小是固定的。声明后,您无法修改它的大小。

使用收藏集java.util.Listjava.util.Set。示例ArrayList,它是动态增长的并由数组支持。

答案 2 :(得分:1)

如果你真的必须使用数组,那么你必须使用中间副本来增加数组的大小。

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

但是,最好的方法是使用List实现。

答案 3 :(得分:0)

这取决于用户是否可以输入4个以上的员工姓名。如果他们可以使用ArrayList是更好的选择。 employee变量也需要是类的静态属性,因为它在静态方法中使用。

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;
}

答案 4 :(得分:0)

这里你使用的是在创建时修复的静态数组。我认为你应该使用 java.util.Arraylist,它将为您提供动态数组的功能。