Java do/while循环抵消前两个问题

chr*_*ris 0 java loops boolean

我在java编程类中编写程序.该程序是一个简单的do/while循环,它使用扫描仪类和带有布尔值的启动读取来询问一些问题.当循环第一次迭代时,它可以正常工作,但是当它第二次迭代时,它会立即显示第一个问题和第二个问题,并且只允许我回答第二个问题.我希望这很清楚.有人有任何见解吗?码:

      /*
      * Programmed By: Cristopher Ontiveros
      * Date: 9/19/13
 * Description: Compute weekly salary and witholding for employees
 */
package project.one.cristopher.ontiveros;

import java.util.Scanner;
public class ProjectOneCristopherOntiveros {

     static Scanner sc = new Scanner(System.in);
     public static void main(String[] args) {
     String fName, lName;
     double rate=0, wPay=0, withholding=0;
     int option = 0;
     boolean badval = true;
         System.out.println("Welcome to the Pay Calculator");


     do{
        System.out.println("Enter employee first name: ");
        fName = sc.nextLine();
        System.out.println("Enter employee last name: ");
        lName = sc.nextLine();
        System.out.println("Enter employee hourly rate: ");
        rate = sc.nextDouble();
        wPay = (rate * 40);
        withholding = (wPay * .20);
        System.out.println("Employee " + fName + " " + lName + "\nHourly Rate: " + rate + "\nWeekly Pay: " + wPay + "\nWithholding Amount: " + withholding);


         System.out.println("Would you like to enter another employee? (1 = yes, 2 = no)");
     option = sc.nextInt();
     sc.nextLine()
     if(option == 1){
         badval = true;

     } else {
         badval = false;

     }
     }while(badval);


  }
Run Code Online (Sandbox Code Playgroud)

}

Mar*_*oun 5

当你这样做时sc.nextDouble();,nextDouble只读取double并跳过\n指示新行的Enter键(用户输入的键),以便下一个读取它nextLine()!

你应该通过添加另一个来"吞下"这个新行sc.nextLine().