Java 扫描仪合并行
Java Scanner merging lines
我正在尝试使用 for 循环请求 3 条用户输入,然后用于创建 class 的新实例。它适用于第一个循环,但第二个循环我在控制台上收到此提示,它需要一个整数输入。
Enter the employee's name: adam
Enter their hours worked: 1
Enter the employee's pay rate: 1
Enter the employee's name: Enter their hours worked:
输入数据的代码如下所示:
for (int i = 0; i < 5; i++) {
System.out.print("Enter the employee's name: ");
String employeeName = input.nextLine();
System.out.print("Enter their hours worked: ");
int hoursWorked = input.nextInt();
System.out.print("Enter the employee's pay rate: ");
double payRate = input.nextDouble();
employee[i] = new Payroll(employeeName, hoursWorked, payRate);
我在该站点上看到其他问题,建议我使用 input.next() 而不是 input.nextLine(),但该解决方案也不起作用。如何让输入线按照应有的方式分开?
问题出在这里:
double payRate = input.nextDouble();
对于 nextDouble
,扫描器在完成读取 double
值时停止,跳过该行的其余部分,包括 \n
.
第二次调用 nextLine()
时,它只是读取您之前输入的双输入的结尾,然后继续“输入他们的工作时间”,在第一次迭代后将 employeeName
设置为空。
事实上,只有当您输入由以下员工姓名分隔的费率值时,您的代码才能正常工作,如下所示(丑陋):
Enter the employee's pay rate: 3559 James
使扫描器在循环结束时强制读取“双”行的结尾:
for (int i = 0; i < 5; i++)
{
System.out.print("Enter the employee's name: ");
String employeeName = input.nextLine();
System.out.print("Enter their hours worked: ");
int hoursWorked = input.nextInt();
System.out.print("Enter the employee's pay rate: ");
double payRate = input.nextDouble();
employee[i] = new Payroll(employeeName, hoursWorked, payRate);
//this
if (i<4)
input.nextLine();
}
我正在尝试使用 for 循环请求 3 条用户输入,然后用于创建 class 的新实例。它适用于第一个循环,但第二个循环我在控制台上收到此提示,它需要一个整数输入。
Enter the employee's name: adam
Enter their hours worked: 1
Enter the employee's pay rate: 1
Enter the employee's name: Enter their hours worked:
输入数据的代码如下所示:
for (int i = 0; i < 5; i++) {
System.out.print("Enter the employee's name: ");
String employeeName = input.nextLine();
System.out.print("Enter their hours worked: ");
int hoursWorked = input.nextInt();
System.out.print("Enter the employee's pay rate: ");
double payRate = input.nextDouble();
employee[i] = new Payroll(employeeName, hoursWorked, payRate);
我在该站点上看到其他问题,建议我使用 input.next() 而不是 input.nextLine(),但该解决方案也不起作用。如何让输入线按照应有的方式分开?
问题出在这里:
double payRate = input.nextDouble();
对于 nextDouble
,扫描器在完成读取 double
值时停止,跳过该行的其余部分,包括 \n
.
第二次调用 nextLine()
时,它只是读取您之前输入的双输入的结尾,然后继续“输入他们的工作时间”,在第一次迭代后将 employeeName
设置为空。
事实上,只有当您输入由以下员工姓名分隔的费率值时,您的代码才能正常工作,如下所示(丑陋):
Enter the employee's pay rate: 3559 James
使扫描器在循环结束时强制读取“双”行的结尾:
for (int i = 0; i < 5; i++)
{
System.out.print("Enter the employee's name: ");
String employeeName = input.nextLine();
System.out.print("Enter their hours worked: ");
int hoursWorked = input.nextInt();
System.out.print("Enter the employee's pay rate: ");
double payRate = input.nextDouble();
employee[i] = new Payroll(employeeName, hoursWorked, payRate);
//this
if (i<4)
input.nextLine();
}