2017-02-06 7 views
-3

私は就業時間、hh:mmのクロッキング開始と停止を行っています。 給与は150時間です。それは仕事をdoesntの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; 

は私がINDATAを取得します。結果は、hour2とhour1の差異をカウントし、分を無視します。

+1

'totMinutes'は整数ですか?整数は小数点以下を格納することはできず、整数だけを格納します。 –

+0

JVMが提供するCalendarクラスを実際に使用する必要があります。さもなければ、あなたは日光浴、閏年などを扱わなければなりません。 –

+0

最小限の完全で検証可能な例を示してください。 –

答えて

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 

ただし、コメントで指摘されているように、日付/時刻の計算にライブラリを使用する方が賢明かもしれません。

関連する問題