gpt4 book ai didi

java - while 循环的哨兵值

转载 作者:行者123 更新时间:2023-12-01 12:23:50 25 4
gpt4 key购买 nike

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

最佳答案

您仅在函数 calcPay 中设置双倍 payRate 一次,然后在不会更改的条件下循环(因为您不会再次设置它)。

关于java - while 循环的哨兵值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26496908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com