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

5 回答 5

5

你不能,基本上。

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

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

另请注意,您当前在该方法中只有一个局部变量。list您可能需要一个字段。理想情况下是一个实例字段(例如在一个名为Company或类似的类中) - 但如果您只是在试验,您现在可以使用一个static字段。静态字段代表全局状态,对于可变值通常不是一个好主意,但目前看起来你所有的方法都是静态的......

于 2013-01-20T14:06:32.157 回答
1

数组的大小是固定的。一旦你声明你不能修改它的大小。

使用集合java.util.Listjava.util.Set. ArrayList可动态增长并由数组支持的示例。

于 2013-01-20T14:08:56.563 回答
1

如果您真的必须使用数组,那么您将不得不通过使用中间副本来增加数组的大小。

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

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

于 2013-01-20T14:11:19.817 回答
0

在这里,您使用的是在创建时固定的静态数组。我认为您应该使用 java.util.Arraylist 它将为您提供动态数组的便利。

于 2013-01-20T16:38:24.333 回答
0

这取决于用户是否可以输入超过 4 个员工姓名。如果他们可以,那么使用 ArrayList 是更好的选择。此外,employees 变量需要是类的静态属性,因为它用于静态方法。

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;
}
于 2013-01-20T14:15:40.843 回答