[英]Java Scanner merging lines
我正在嘗試使用 for 循環來詢問 3 條用戶輸入,然后用於創建 class 的新實例。 它適用於第一個循環,但是第二個循環我在控制台上得到這個提示,它需要一個 integer 輸入。
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
精度值時停止,跳過該行的 rest ,包括\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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.