2015-10-30 4 views
-2

Я пытаюсь получить оплату сверхурочной работы, пока сотрудник работает более 40 часов. Все остальное работает правильно в моей программе заработной платыкак я могу получить это сверхурочное время для правильного отображения

Это, Что отображается:

Введите имя сотрудника: Tom

Введите почасовой ставки: 10

Введите Часы работы: 42

Проверка тома будет равна

$ 420.00

В течение 40 часов были разработаны следует применять ставку сверхурочных

import java.io.*; 
import java.text.DecimalFormat; 
import java.time.*; 

public class payroll { 
    public static void main(String[] args) throws IOException { 

     String employeeName, tempVariable; 
     double hourlyRate, hoursWorked, payroll, overTime = 1.5; 
     BufferedReader myIn = new BufferedReader(new InputStreamReader(System.in)); 

     System.out.print("Enter the Employee Name:"); 
     employeeName = myIn.readLine(); 

     System.out.print("Enter the hourly pay rate: "); 
     tempVariable = myIn.readLine(); 
     hourlyRate = Double.parseDouble(tempVariable); 

     System.out.print("Enter the number of hours worked:"); 
     tempVariable = myIn.readLine(); 
     hoursWorked = Double.parseDouble(tempVariable); 

     payroll = (double) hourlyRate * hoursWorked; 
     if (hoursWorked > 40) payroll = (overTime * hourlyRate); 
     DecimalFormat money = new DecimalFormat("$0.00"); 

     System.out.println(employeeName + "'s check will amount to "); 
     System.out.println(money.format(payroll)); 

    } 
} 
+0

В чем же ваша проблема? – Tgsmith61591

+0

показать пример того, что он делает? – 3kings

+0

Когда я запускаю программу, я не получаю нужную сумму. Это не расчет сверхурочной работы, когда работник работает более 40 часов. –

ответ

0
if(hoursWorked >40) payroll =(overTime * hourlyRate*(hoursWorked-40))+hourlyRate*40; 

Это то, что вы хотите?

+0

Да, это здорово, но вы можете сказать мне очень быстро, как вы поняли (hoursWorked-40)) + hourlyRate * 40? –

+0

Я думаю, что вы имеете в виду, если вы работаете более 40 часов, зарплата должна быть в 1,5 раза выше обычной нормы? Поэтому я использую общее время работы - 40, которое является сверхурочным, и умножается на время (1.5) +, что вы должны получить за 40 часов, это 40 часов следует рассматривать как нормальную ставку. Это мое понимание. – Kun

+0

Да, это здорово! Спасибо (= узнал больше от ya через 2 секунды, чем мой старый преподаватель ahah –

0

у вас есть сверхурочные равно 1,5. Затем вы проверяете, есть ли 1.5> hoursworked. Если человек работает менее 1,5 часов, он не будет отображаться.

Я думаю, что вы хотите сверхурочно равным 40, и если это меньше, чем hourswork

0

Две вещи ...

Как уже упоминалось в комментариях, вы сравниваете overTime к 40, после того, как установить overTime = 1.5. Таким образом, это никогда не будет так. Я предполагаю, что вы хотите что-то больше вдоль линий

if (hoursWorked > 40) ... 

Во-вторых, ваше вычисление кажется прочь. Если вы исправите тест, вы получите payroll = overTime * hourlyRate, не учитывая количество отработанных часов. Я предполагаю, что вы хотите, чтобы сверхурочное время было выплачено по 1.5 раз почасовой ставке, и в этом случае вы хотели бы заплатить 40 часов почасовой ставкой плюс сверхурочные (т.е. количество отработанных часов минус 40) в 1,5 раза почасовой ставки:

if (hoursWorked > 40) { 
    payroll = (40 * hourlyRate) + ((hoursWorked - 40) * overTime * hourlyRate) 
} 

наружная скобка только там для ясности, приоритет операторов делает их ненужными.

Кроме того, вы должны использовать константу для 40, и вам может понадобиться переименовать переменную overTime в нечто по строкам overTimeMultiplier, чтобы избежать дальнейших путаниц.

+0

Спасибо, что объяснил это мне (= –