我是 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());
}
}
}