Попытка вычислить платежную ведомость на Java

#java #if-statement

#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 amp;amp; grossPay < 43)
        {
            System.out.println("Deductions are "   socialSecurity   medical);
        }
        else

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

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

        }
        else

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

        } 
        else

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

        }   
    }
}
 

Ответ №1:

Пожалуйста, заключите свою сумму в круглые скобки:

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

В этом случае сначала будет создана сумма, а затем результат будет объединен в строку, в противном случае он будет объединять социальную безопасность, а затем медицинскую по одному.

То же правило подходит для аналогичных случаев в вашем коде.