我有以下代码。我需要将Array
和for(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
答案 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);
因为您没有在您的要求和代码中指定role
和level
的值。
理想情况下,如果要将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
。