0

我是 Java 新手,正在上我的第一堂课。在过去的两周里,我一直在努力完成这项家庭作业,需要一些帮助。任务是编写一个工资单程序,提示输入工资率和小时数。它需要不断循环,直到我输入一个哨兵值。输入哨兵值后,它将平均我的总工资。

我终于把它带到了它会不断循环的地方,询问工资率和小时数。它正确计算收入并将循环。

这是我的问题。我似乎无法让 -1 的哨兵值起作用。当我尝试将其设置为在我输入 -1 时结束时,它什么也不做。它还在输入每组工资率和小时数后平均收入。我希望它等到最后,然后平均所有收入。

请,任何输入都会有所帮助!

这是我到目前为止所拥有的。我从一个实现文件拉到一个测试文件。

import java.util.Scanner;

public class PayRoll 
{
    private double hours;
    private double payRate;
    private double grossPay;

    public void Payroll()
    {
        this.hours = hours;
        this.payRate = payRate;
    }

    public void setHours (double hours)
    {
        this.hours = hours;
    }

    public double getHours ()
    {
        return hours;
    }

    public void setPayRate (double payRate)
    {
        this.payRate = payRate;
    }

    public double getPayRate ()
    {
        return payRate;
    }

    public double getPay()
    {
        return (payRate * hours);
    }

    public void calcPay()
    {
        Scanner input = new Scanner(System.in);
        double total = 0;
        int payCounter = 0;

        System.out.printf("Enter employee payrate: $");
        setPayRate(input.nextDouble());

        System.out.printf("Enter employee hours worked: ");
        setHours(input.nextDouble());

        double payRate = getPayRate();

        while (payRate != -1) //Loops until the sentinel value is read. 
        {
            if (getHours() > 40)
            {
                System.out.printf("Total income is: $%.2f",
                        ((getPayRate() * 40)+((getHours() - 40)
                        * (getPayRate() * 1.5))));
                grossPay = ((getPayRate() * 40)+((getHours() - 40)
                        * (getPayRate() * 1.5)));

                payCounter++;
            }

            if (getHours() == 40)
            {
                System.out.printf("Total income is: $%.2f", ((getPayRate() * 40)));
                grossPay = ((getPayRate() * 40)); 

                payCounter++;
            }

            if (getHours() < 40)
            {
                System.out.printf("Total income is $%.2f%n",
                        ((getPayRate() * getHours())));
                grossPay = (getPayRate() * getHours());
                payCounter++;
            }

            if (payCounter!= 0)
            {
                total = total + grossPay; //Adds grade to total
                double average = (double) total / payCounter;

                System.out.printf(
                        "%n%nNumber of gross income entered: %d.%n%nTotal is $%.2f%n",
                        payCounter, total);
                System.out.printf("%nAverage income is: %.2f%n", average);
            }
            else 
            {
                System.out.println("No pay rate entered.");
            }

            System.out.printf("%nEnter employee payrate: $");
            setPayRate(input.nextDouble());

            System.out.printf("%nEnter employee hours worked: %n");
            setHours(input.nextDouble());
        }
    }
}
4

1 回答 1

1

您在函数 calcPay 中只设置了一次双倍 payRate,然后在一个不会改变的条件上循环(因为您没有再次设置它)。

于 2014-10-21T21:50:15.670 回答