我正在使用Java制作工资单。如果我的数学公式看起来正确,为什么我得到错误的净工资?



我正在制作一个工资计算器。第一个人工作38.00小时,工资率为8.75美元。第二个人工作46.50小时,工资率为17.00美元。很明显,第二个人加班。我在计算净工资和总工资时遇到问题。第二个人的净工资应该是 718.89 美元。我一直得到 140.89 美元。只有当该人加班 (>40) 时,才会出现问题。我的 if 语句有问题吗?我想要一些建议。我已经学习 Java 2 周了,请原谅错误。

package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
final byte PERCENT = 15;
// Tax is 15%
final float taxRate = PERCENT / (float) 100;
Scanner scanner = new Scanner(System.in);
System.out.print("First Name: ");
String firstName = scanner.next().trim();
System.out.print("Last Name: ");
String lastName = scanner.next().trim();
System.out.println(lastName + ", " + firstName);
System.out.print("Pay Rate: ");
float payRate = scanner.nextFloat();
System.out.print("Hours Worked: ");
float totalHours = scanner.nextFloat();
// regular hours = total hours if less than 40
// overtime = total hours - 40
float regularPay = 0;
if (totalHours <= 40) {
regularPay = totalHours * payRate;
}
float overTimePay = 0;
if (totalHours > 40) {
overTimePay = (float) ((totalHours - 40) * 1.5 * payRate);
}
final double grossPay = (double) regularPay + (double) overTimePay;
System.out.println("Gross Pay: " + (Math.round(grossPay * 100.0) / 100.0));
final double taxAmount = grossPay * taxRate;
System.out.println("Tax Amount: " + (Math.round(taxAmount * 100.0) / 100.0));
final double netPay = grossPay - taxAmount;
System.out.println("Net Pay: " + (Math.round(netPay * 100.0) / 100.0));
}
}

如果总小时数> 40,则 regularPay 在您的代码中将为 0。 您应该将条件更改为类似的东西。

  • 如果总小时数> 40,则首先计算 40 小时的常规支付
  • 加班费应为剩余小时数(总小时数-40)

您的regularPay变量仅在小时数<=40时被记录。您需要在第二个 if 语句中放入一些内容来设置regularPay变量。您可能想要类似以下内容:

regularPay = 40*payRate;

将其包含在您的第二个 if 语句中

最新更新