簡體   English   中英

Java 掃描儀合並線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM