我不知道这是不对的,所以我需要你的评论。我有一系列员工姓名。它将显示在控制台上,然后将提示用户是否要插入其他名称。该名称应添加到数组的末尾(索引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();
答案 0 :(得分:5)
你基本上不能。
阵列在构建时具有固定的大小。您可以创建一个具有所需大小的新数组,将所有现有元素复制到其中,然后复制新元素......或者您可以使用List<String>
实现,例如{{ 1}}。我强烈建议采用后一种方法。
我建议您阅读collections tutorial以了解有关Java中可用的各种集合的更多信息。
另请注意,您目前只在ArrayList<String>
方法中获得了 local 变量。你可能想要一个字段。理想情况下是一个实例字段(例如,在一个名为list
或类似的类中) - 但如果您只是在进行实验,那么您现在可以使用Company
字段。静态字段代表全局状态,对于可变值通常是一个坏主意,但它看起来好像你的所有方法都是静态的......
答案 1 :(得分:1)
阵列的大小是固定的。声明后,您无法修改它的大小。
使用收藏集java.util.List
或java.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,它将为您提供动态数组的功能。