2016-09-30 4 views
2

Ich versuche, meinen Code so zu machen, dass es mehr kostet für Zahlen über 7. Es kostet 1 Franken für jede Stunde zwischen 0 - 7 und 2 Franken für Zeiten von 8 - 24. Jetzt habe ich folgendes:Versuchen, verschiedene Kosten für unterschiedliche Zeit zu haben - Java

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){ 

Start ist der erste Wert, den der Benutzer eingibt und das Ende ist der zweite.

+0

Übrigens, wenn Sie tatsächlich mit Uhrzeitwerten arbeiten, beachten Sie die ['LocalTime'] (https://docs.oracle.com/javase/8/docs/api/java/ time/LocalTime.html) Klasse. –

Antwort

2

Sind Sie auf der Suche nach so etwas?

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 

Natürlich müssen Sie Ihre Validierungen enthalten, so dass Stunden sind nicht weniger als 0 oder größer als 24 ist, und dass Start nicht nach dem Ende.

+0

Yep ich habe die Validierungen, so dass es nicht weniger als 0 oder mehr als 24 sein kann, versuche ich es so zu machen, dass wenn jemand zum Beispiel 4 und 12 eingibt, es die 3 Franc von 4 - 7 und den addieren wird 8 Franken von 8 - 12, zeigt, dass der Benutzer 11 Franken schuldet –

+0

Meine Antwort gibt Ihnen das. Check out –

+0

Haben Sie darüber nachgedacht, was passieren soll, wenn Start 4 und Ende 8 ist? Ich meine, 8. Stunde sollte als 2 oder 1 zählen? Ich denke, mit 4-12 sollten Sie wie (4-7) * 1 + (12-7) * 2 haben, sonst verlieren Sie Zeit von 7. bis 8. Stunde. Was immer Sie brauchen, können Sie Konstanten in Zeilen ändern: ** int leftHandDiff = Math.min (7, Ende) - Start ** und ** int RightHandDiff = Ende - Math.max (7, Start) ** –

Verwandte Themen