将多个用户String输入存储到Array Java中

时间:2017-05-19 09:28:32

标签: java arrays

我有以下代码。我需要将Arrayfor(int i = 0; i<5; i++) { int numEmps = 0; System.out.print("Enter Employee number: "); employeeNumber = sc.nextLine(); numEmps++; System.out.print("Enter Employee name: "); name = sc.nextLine(); numEmps++; employees[numEmps] = new Employee(employeeNumber, name, role, level); } 存储到UserDefaults中。我不确定我做错了什么:

LoginController

5 个答案:

答案 0 :(得分:2)

首先您必须在循环外使用int numEmps = 0;

int numEmps = 0;
for(int i = 0; i<5; i++){
  ...
}

在您的情况下,您将所有员工都放在employees[2]

第二次您只需使用一个numEmps++;

您的代码应如下所示:

int numEmps = 0;//<<------------------------------------------Problem 1
for (int i = 0; i < 5; i++) {
    System.out.print("Enter Employee number: ");
    employeeNumber = sc.nextLine();
    //numEmps++;<<--------------------------------------------Problem 2
    System.out.print("Enter Employee name: ");
    name = sc.nextLine();
    numEmps++;

    employees[numEmps] = new Employee(employeeNumber, name, role, level);
    //          ^^------------------You can avoid to use numEmps, instead you can use i
}

注意,如@Le Duy Khanh在评论中提及,您可以使用employees[i]而不是使用新变量

答案 1 :(得分:0)

在这里,您将这两个信息存储在Employee数组中 看起来很好。
在循环之前,您应该声明数组:

Employee[] employees = new Employee[5];

除了在循环中你不需要使用numEmp(你顺便增加两次,这是不合适的),因为你已经在你声明的int i值环。因此,只需使用i作为数组中添加元素的索引。

这应该足够了:

employees[i] = new Employee(employeeNumber, name);

因为您没有在您的要求和代码中指定rolelevel的值。

理想情况下,如果要将employeeNumber表示为数字(例如int或long),employeeNumber = sc.nextLine();应转换为数值(int number = Integer.valueOf(employeeNumber))。

答案 2 :(得分:0)

因为你在每次循环迭代时增加两次numEmps变量,所以你的数组每2个元素就被填充......

答案 3 :(得分:0)

int numEmps = 0;放出for循环。

每次循环时都会重新初始化为零。

答案 4 :(得分:0)

int numEmps = 0;

for(int i = 0; i<5; i++)
{
   System.out.print("Enter Employee number: ");

   employeeNumber = sc.nextLine();

   numEmps++;
   System.out.print("Enter Employee name: ");

   name = sc.nextLine();

   numEmps++;

   employees[numEmps] = new Employee(employeeNumber, name, role, level);
}

numEmps循环之外使用变量for,否则在每次迭代中它都会再次成为0