而Loop不重复

时间:2013-01-27 20:27:58

标签: java while-loop

我很难在执行循环时执行此操作。我尝试了它而没有先重置扫描仪,它会循环,但第二行立即抛出第二行,所以建议添加扫描仪重置行。现在循环根本没有重复....任何建议?我正在查看主程序中的第一个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();
   }
   }
}

1 个答案:

答案 0 :(得分:1)

添加以下块的第三行(在您读取员工姓名的位置)是通过对代码进行最少更改来解决此问题的方法。

 System.out.print( "Enter employee name or enter 'quit' when finished. " );
 empName = myScanner.nextLine();
 if(empName.equals("quit")) break;