试图用java计算工资单

时间:2016-10-15 22:05:34

标签: java if-statement

我必须弄清楚总薪酬是否介于“某某”之间,这是“这个”税率等等。我以为我做得还不错,但是如果我输入一个高税率的话,它仍会输出每一个税务答案工作小时数...像这样“扣除是275.0165.0770.0000000000001”。

我是否也这样做了很长的路,因为我在思考? 非常感谢您的帮助!

import java.util.Scanner;
public class prob2
{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        double range = (168);

        System.out.println("Enter the number of hours worked in a week:");
        double hours = in.nextDouble();

        System.out.println("Enter rate per hour:");
        double rate = in.nextDouble();

        double overtimeHours = hours - 40;
        double overtimePay = (overtimeHours * rate) * 1.5;
        double basePay = (hours - overtimeHours) * rate;
        double grossPay = basePay + overtimePay;
        double socialSecurity = .1 * grossPay;
        double medical = .06 * grossPay;

        if (overtimeHours < 0 )
        {
            System.out.println("Number of overtime hours are " + 0);
        }
        else
        {
            System.out.println("Number of overtime hours are " + overtimeHours);
        }

        if (overtimeHours < 0 )
        {
            System.out.println("Base pay is " + hours * rate);
        }
        else
        {
            System.out.println("Base pay is " + basePay);
        }

        if (overtimeHours < 0 )
        {
            System.out.println("Overtime pay is " + 0);
        }
        else
        {
            System.out.println("Overtime pay is " + overtimePay);
        }        

        if (grossPay < 0 )
        {
            System.out.println("Gross pay is " + hours * rate);
        }
        else
        {
            System.out.println("Gross pay is " + grossPay);
        }  

        if (grossPay > 0 && grossPay < 43)
        {
            System.out.println("Deductions are " + socialSecurity + medical);
        }
        else

        if (43.01 < grossPay && grossPay < 218.00)         
        {
            System.out.println("Deductions are " + socialSecurity + medical + (.10 * grossPay));
        }
        else

        if (218.01 < grossPay && grossPay < 753.00)              
        {
            System.out.println("Deductions are " + socialSecurity + medical + (.15 * grossPay));

        }
        else

        if (grossPay > 0 && 753.01 < grossPay && grossPay < 1762.00)              
        {
            System.out.println("Deductions are " + socialSecurity + medical + (.25 * grossPay));

        } 
        else

        if (1762.01 < grossPay && grossPay < 3627.00)              
        {
            System.out.println("Deductions are " + socialSecurity + medical + (.28 * grossPay));

        }   
    }
}

1 个答案:

答案 0 :(得分:0)

请将您的总和包括在括号中:

System.out.println("Deductions are " + (socialSecurity + medical));

在这种情况下,它将首先创建sum,然后将结果连接到字符串,否则它将逐个连接socialSecurity然后医疗。

同样的规则适用于您的代码中的类似情况。