2016-09-30 9 views
2

私は自分のコードを7以上の数になるようにしたいと思っています。時間は0〜7と2フランの1時間ごとに1フランです異なる時間に異なるコストを試してみる -

int start = user_input.nextInt(); 
int finish = user_input.nextInt(); 
int hours = finish - start; 
int hours2 = finish - start; 
int francs1 = 1 * hours; 
int francs2 = 2 * hours; 
if (start > 0 && finish < 7){ 
      System.out.println(hours + " hour(s) at a cost of " + francs1 + " francs"); 
     }else{ 
      if (start > 7 && finish < 24){ 
       System.out.println(hours2 + " hour(s) at a cost of " + francs2 + " francs"); 
      }else{ 
       if (start < 7 && finish > 7){ 

スタート、ユーザが入力する最初の値であり、仕上がりが第二次のとおりです。 - 8から24今の私は、これは持っています。

+0

ところで、実際に時刻の値を扱う場合は、['LocalTime'](https://docs.oracle.com/javase/8/docs/api/java/)に注意してください。 time/LocalTime.html)クラスです。 –

答えて

2

このようなものをお探しですか?

int start = 8 
int end = 10 
int leftHandDiff = Math.min(7, end) - start 
int rightHandDiff = end - Math.max(7, start) 
int francs1 = (leftHandDiff > 0 ? leftHandDiff : 0) * 1 
int francs2 = (rightHandDiff > 0 ? rightHandDiff : 0) * 2 

もちろん、時間が0よりも大きくなくても24時間以上になるように検証を含める必要があります。開始は終了後ではありません。

+0

私はそれが0より小さいか24より大きいように検証を持っています。誰かが例えば4と12を入力した場合、4 - 7から3フランを追加するようにしています。ユーザーが11フランを負っていることを示す、8 - 12からの8フラン。 –

+0

私の答えはあなたにそれを与える。それをチェックしてください –

+0

あなたは、開始が4で終了が8の場合にどうなるべきか考えましたか?私は8時間は2または1と数えるべきですか?私は4-12の場合は(4-7)* 1 +(12-7)* 2のようにしなければならないと思います。そうでなければ、7時間から8時間までの時間が失われます。 ** int leftHandDiff = Math.min(7、end) - start **および** int rightHandDiff = end - Math.max(7、start)** –

関連する問題