我很难让这个while循环执行。我在没有先重置扫描仪的情况下尝试了它,它会循环但会立即将第二行与第一行一起抛出,因此建议添加扫描仪重置行。现在循环根本不重复......有什么建议吗?我正在查看主程序中的第一个 while 循环,它应该重复整个程序,直到在 empName 字段中输入“退出”。不是嵌套在中间的较小的while循环。
Scanner input;
empName = " ";
while (!empName.equals("quit"))
{
input = new Scanner (System.in);
System.out.print( "Enter employee name or enter 'quit' when finished. " );
empName = myScanner.nextLine();
hourlyRate = -1;
while (hourlyRate <= 0)
{
System.out.print( "What is their hourly rate? $");
hourlyRate = myScanner.nextDouble();
if (hourlyRate <= 0)
{
System.out.println( "Value is not valid, please enter an amount above zero.");
}
}
totHours = -1;
while (totHours <= 0)
{
System.out.print( "How many hours did they work? ");
totHours = myScanner.nextDouble();
if (totHours <= 0)
{
System.out.println( "Value is not valid, please enter an amount above zero.");
}
}
if (totHours > 40.00)//Calculate Pay and Taxes if OT
{
otHours = totHours - 40;
regHours = totHours - otHours;
otPay = (1.5 * hourlyRate) * otHours;
regPay = hourlyRate * regHours;
grossPay = regPay + otPay;
taxes = grossPay * .13;
netPay = grossPay - taxes;
//Display OT information
System.out.print( "Employee name: ");
System.out.println(empName);
System.out.print( "Hourly Rate: ");
System.out.println(money.format(hourlyRate));
System.out.print( "Regular Hours Worked: ");
System.out.println(regHours);
System.out.print( "OT Hours Worked: ");
System.out.println(otHours);
System.out.print( "Total Hours Worked: ");
System.out.println(totHours);
System.out.println(" ");
System.out.print( "Regular Pay = ");
System.out.println(money.format(regPay));
System.out.print( "Overtime Pay = ");
System.out.println(money.format(otPay));
System.out.print( "Gross Pay = ");
System.out.println(money.format(grossPay));
System.out.print( "Federal Taxes = ");
System.out.println(money.format(taxes));
System.out.println( " ");
System.out.print( "Net Pay = ");
System.out.println(money.format(netPay));
}
else //Calculate No OT Pay and Taxes
{
grossPay = hourlyRate * totHours;
taxes = .13 * grossPay;
netPay = grossPay - taxes;
//Display No OT Information
System.out.print( "Employee name: ");
System.out.println(empName);
System.out.print( "Hourly Rate: ");
System.out.println(money.format(hourlyRate));
System.out.print( "Hours Worked: ");
System.out.println(totHours);
System.out.println( " ");
System.out.print( "Gross Pay = ");
System.out.println(money.format(grossPay));
System.out.print( "Federal Taxes = ");
System.out.println(money.format(taxes));
System.out.println( " ");
System.out.print( "Net Pay = ");
System.out.println(money.format(netPay));
System.out.println( " ");
}
String clearBuffer = input.nextLine();
}
}
}