Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我正在用Java制作工资单。如果我的数学公式似乎正确,为什么我得到的净工资是错误的?_Java - Fatal编程技术网

I';我正在用Java制作工资单。如果我的数学公式似乎正确,为什么我得到的净工资是错误的?

I';我正在用Java制作工资单。如果我的数学公式似乎正确,为什么我得到的净工资是错误的?,java,Java,我在做工资计算器。第一个人工作38小时,工资为8.75美元。第二个人工作46.50小时,工资为17.00美元。很明显,第二个人加班了。我在计算净工资和总工资时遇到问题。第二个人的净工资应该是718.89美元。我一直得到140.89美元。只有当员工加班(>40)时才会出现问题。我的if语句有问题吗?我想要一些建议。我已经学习Java两周了,请原谅我的错误 package com.company; import java.util.Scanner; public class Main {

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

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));
    }
}
package.com公司;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
最终字节百分比=15;
//税是15%
最终浮动税率=百分比/(浮动)100;
扫描仪=新的扫描仪(System.in);
系统输出打印(“名字:”);
String firstName=scanner.next().trim();
系统输出打印(“姓氏:”);
字符串lastName=scanner.next().trim();
System.out.println(lastName+,“+firstName);
系统输出打印(“工资率:”);
浮动工资率=scanner.nextFloat();
系统输出打印(“工作时间:”);
float totalHours=scanner.nextFloat();
//正常工作时间=总工作时间(如果少于40小时)
//加班=总小时数-40
浮动工资=0;
若有(总计40小时){
超期工资=(浮动)(总小时数-40)*1.5*工资率);
}
最终双倍总工资=(双倍)正常工资+(双倍)超期工资;
System.out.println(“工资总额:”+(数学四舍五入(grossPay*100.0)/100.0));
最终双倍税额=总税额*税率;
System.out.println(“税额:+(数学四舍五入(税额*100.0)/100.0));
最终双倍净付=总收入-税额;
System.out.println(“净支付:”+(数学四舍五入(净支付*100.0)/100.0));
}
}

只有当小时数如果总小时数>40时,才会记录您的
regularPay
变量。如果总小时数>40,代码中的regularPay将为0。 你应该把条件改成这样

  • 如果总小时数>40,首先计算40小时的正常工资
  • 加班费应为剩余小时数(总小时数-40)

当代码中的总小时数>40时,不计算regularPay。当totalHours>40时,请确保计算前40小时的固定工资和超额金额的加班费。如果此人加班,则您的代码仅为超额时间支付加班费,但在40小时之前不支付固定工资。请删除“javahelp”标记。它只针对特定的应用程序帮助系统。