我很难在执行循环时执行此操作。我尝试了它而没有先重置扫描仪,它会循环,但第二行立即抛出第二行,所以建议添加扫描仪重置行。现在循环根本没有重复....任何建议?我正在查看主程序中的第一个while循环,它应该重复整个程序,直到“quit”进入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();
}
}
}
答案 0 :(得分:1)
添加以下块的第三行(在您读取员工姓名的位置)是通过对代码进行最少更改来解决此问题的方法。
System.out.print( "Enter employee name or enter 'quit' when finished. " );
empName = myScanner.nextLine();
if(empName.equals("quit")) break;