2017-02-06 3 views
-3

Я запускаю запуск и остановку для рабочего времени, чч: мм. Зарплата 150/час.Java Расчет заработной платы

я получаю: входные данные,

hour1 = keyboard.nextInt(); 
minute1 = keyboard.nextInt(); 
keyboard.nextLine(); 

hour2 = keyboard.nextInt(); 
minute2 = keyboard.nextInt(); 

Total hours: 
totHours = hour2 - hour1; 

Total minutes: 
totMinutes = (minute2 + minute1)/60; 

totTime = totHours + totMinutes; 
totSalary = totTime*Salary; 

Это не работает. Результат просто учитывает различия между часами 2 и часами 1 и игнорирует минуты.

+1

Является ли 'totMinutes' целым числом? Целое не может хранить десятичные знаки и хранить только целые числа. –

+0

Вы должны действительно использовать класс Calendar, предоставляемый JVM. В противном случае вам придется иметь дело с дневным освещением, високосными годами и похожими на вас. –

+0

Просьба показать минимальный, полный и проверяемый пример. См. Http://stackoverflow.com/help/mcve –

ответ

1

Кажется, что ваши часы и минуты относятся к типу int; по крайней мере, вы используете nextInt, чтобы получить значения, и я могу воспроизвести вашу проблему таким образом.

int hour1 = 12; 
int minute1 = 45; 
int hour2 = 14; 
int minute2 = 30; 

double totHours = hour2 - hour1; 
double totMinutes = (minute2 + minute1)/60; // 1.0 
double totTime = totHours + totMinutes;  // 3.0 

Это потому, что если оба делимое и делитель являются целыми числами, то / также будет производить целое число, то есть пол фактического разделения. Разделите на 60.0, затем он работает. Кроме того, используйте -, а не +. И, конечно же, обязательно сохраните результат в double.

double totMinutes = (minute2 - minute1)/60.0; // -0.25 
double totTime = totHours + totMinutes;  // 1.75 

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

Смежные вопросы