0

好的,所以我不得不修改我已经在工作的程序以使用 2 个单独的类……一个用于执行任务,一个用于存储信息。一旦它进行第一次计算并到达第二个条目,它就会跳过员工姓名。为什么?请帮忙。这是代码:

package payroll_program_3;
import java.util.Scanner;

        public class payroll_program_3
{
            public static void main(String[] args)
    {

            Scanner input = new Scanner( System.in );

            employee_info theEmployee = new employee_info();

            String eName = "";
            double Hours = 0.0;
            double Rate = 0.0;
while(true)
        {
System.out.print("\nEnter Employee's Name: ");
eName = input.nextLine();
theEmployee.setName(eName);
if (eName.equalsIgnoreCase("stop"))
                {     return;
                }

System.out.print("\nEnter Employee's Hours Worked: ");
Hours = input.nextDouble();
theEmployee.setHours(Hours);
while (Hours <0)                                                                 {                                                                                                                  System.out.printf("Hours cannot be negative\n");
                    System.out.printf("Please enter hours worked\n");
                    Hours = input.nextDouble();
                    theEmployee.setHours(Hours);
                }

System.out.print("\nEnter Employee's Rate of Pay: ");
Rate = input.nextDouble();
theEmployee.setRate(Rate);
while (Rate <0)                                                                 {                                                                                                                  System.out.printf("Pay rate cannot be negative\n");
                    System.out.printf("Please enter hourly rate\n");
                    Rate = input.nextDouble();
                    theEmployee.setRate(Rate);
                }

System.out.print("\n Employee Name:     " + theEmployee.getName());
System.out.print("\n Employee Hours Worked:     " + theEmployee.getHours());
System.out.print("\n Employee Rate of Pay:     " + theEmployee.getRate() + "\n\n");
System.out.printf("\n %s's Gross Pay: $%.2f\n\n\n", theEmployee.getName(), theEmployee.calculatePay());
        }
    }
}


PART 2:

package payroll_program_3;

        public class employee_info
{
            String employeeName;
            double employeeRate;
            double employeeHours;

public employee_info()
    {
    employeeName = "";
    employeeRate = 0;
    employeeHours = 0;
    }

public void setName(String name)
    {
    employeeName = name;
    }

public void setRate(double rate)
    {
    employeeRate = rate;
    }

public void setHours(double hours)
    {
    employeeHours = hours;
    }

public String getName()
    {
    return employeeName;
    }

public double getRate()
    {
    return employeeRate;
    }

public double getHours()
    {
    return employeeHours;
    }

public double calculatePay()
    {
    return (employeeRate * employeeHours);
    }
}
4

2 回答 2

5

有两个地方可能会发生无限循环,因为Hours&Rate在它们内部没有变化。

while (Hours <0)
{
  System.out.printf("Hours cannot be negative\n");
  System.out.printf("Please enter hours worked\n");
}

while (Rate <0)
{
  System.out.printf("Pay rate cannot be negative\n");
  System.out.printf("Please enter hourly rate\n");
}

没有阅读所有代码,但很可能这需要是一个包含continue.

于 2011-02-22T03:37:41.553 回答
0

您需要 hours= input.next double 来更改小时变量,因此它会在 while 条件下失败

于 2011-02-22T03:41:05.647 回答