# Ex-Leistungsnachweis Fahrtdauer



## Wirtschaftsingenieur (2. Nov 2009)

Hallo. Ich schreibe nächste Woche meinen ersten Java-Leistungsnachweis. Es kommen drann, die Grundlagen und if/else.
Ich habe einen Leistungsnachweis vom letzten Jahr von einen Kommilitonen bekommen.
Die Aufgabe lautet wie folgt:

Es soll die Fahrtdauer in Stunden und Minuten einer Zugverbindung bestimmt werden. Dazu gibt der Anwender den Abfahrtzeitpunkt in Stunde HH und Minute MM, sowie den Ankunftszeitpunkt ebenfalls in HH und MM ein. Die Eingaben von Stunde HH und Minute MM können in zwei separaten Eingabeaufforderungen erfolgen. Aus diesen beiden Zeitpunkten soll dann die Dauer der Fahrt ermittelt werden.

Hinweise:
Die Ankunftszeit kann am nächsten Tag sein, z.B. Abfahrtszeit 23.45 Ankunft 01:30.
Alle Eingaben des Anwenders sind auf Plausibilität zu überprüfen.

Hat irgendwer von euch einen Ansatz, wie man diese Aufgabe lösen könnte?
Wir haben so etwas noch nicht behandelt.
Danke schon mal für eure Tipps.


----------



## Creativ (2. Nov 2009)

Für die Stunden:
Wenn die 2. Zeit kleiner als die 1. ist, also wie bei deinen Bsp. 23>1, dann zu der 2. zahl 24 addieren und differenz ausrechene => Anzahl der stunden

Für Minuten eigt. das gleiche, nur halt 60 addieren und differenz berechnen.

So würde ich das jedenfalls machen


----------



## Wirtschaftsingenieur (2. Nov 2009)

Danke. Kennt irgendjemand ein Skript/Buch das eine Aufgabensammlung mit Lösungen enhält? Also für den 1. Nachweis (Grundlangen inkl. if/else), für den zweiten (Schleifen) und für den dritten (Methoden und Felder). Ich möchte nämlich ein Paar Übungen dazu machen, damit ich nächste Woche so gut wie möglich vorbereitet bin. Danke.


----------



## Wirtschaftsingenieur (2. Nov 2009)

Noch ein Problem. Wie kann man Zahlen einlesen?
Also, wenn zum Beispiel steht:
System.out.println("Bitte Euro-Betrag eingeben");
Wie kann man das einlesen lassen?
Wir haben immer eine Hilfsklasse (Std.Input.readDouble) verwendet. Was ist, wenn man die in der Prüfung nicht benutzen darf. Wie schreibt man dann so ein Einleseprogramm?


----------



## Painii (2. Nov 2009)

Wirtschaftsingenieur hat gesagt.:


> Wir haben immer eine Hilfsklasse (Std.Input.readDouble) verwendet. Was ist, wenn man die in der Prüfung nicht benutzen darf. Wie schreibt man dann so ein Einleseprogramm?


1. Wenn die in den Übungen geht dann wohl auch in der Prüfung
2. Scanner (Java Platform SE 6)

3. Streams und so... ist aber dafür nichtmehr nötig mittlerweile


----------



## soli (3. Nov 2009)

Bestimmt nicht die eleganteste Lösung und der beste Code, 
aber es sollte soweit funktionieren: 


```
public class Test 
{
	public static void main(String[] args) {
		
		System.out.println("Fahrzeitberechnung   (c) J.Doe\n");

		int AnkunftsSNeu, AnkunftsMNeu, AnkunftsSNeu2;
		
		int AbfahrtStunde  = StdInput.readInt("Bitte geben Sie Ihre Abfahrtszeit in Stunden ein: ");
		if (AbfahrtStunde <0 | AbfahrtStunde > 23) {
			System.out.println("Falsche Stundeneingabe!\n" + "Bitte starten Sie das Programm neu.");
			System.exit(-1);
		} 		
		int AbfahrtMinute  = StdInput.readInt("Bitte geben Sie Ihre Abfahrtszeit in Minuten ein: ");
		if (AbfahrtMinute <0 | AbfahrtMinute > 60) {
			System.out.println("Falsche Minuteneingabe!\n" + "Bitte starten Sie das Programm neu.");
			System.exit(-1);
		} 
		int AnkunftStunde  = StdInput.readInt("Bitte geben Sie Ihre Ankunftsszeit in Stunden ein: ");
		if (AnkunftStunde <0 | AnkunftStunde > 23) {
			System.out.println("Falsche Stundeneingabe!\n" + "Bitte starten Sie das Programm neu.");
			System.exit(-1);
		} 	
		if (AnkunftStunde<AbfahrtStunde) {
			AnkunftsSNeu = AnkunftStunde+24;
		} else {
			AnkunftsSNeu = AnkunftStunde+0;
		}
		int AnkunftMinute  = StdInput.readInt("Bitte geben Sie Ihre Ankunftsszeit in Minuten ein: ");
		if (AnkunftMinute <0 | AnkunftMinute > 60) {
			System.out.println("Falsche Minuteneingabe!\n" + "Bitte starten Sie das Programm neu.");
			System.exit(-1);
		} 
		if (AnkunftMinute<AbfahrtMinute) {
			AnkunftsMNeu = AnkunftMinute+60;
			AnkunftsSNeu2 = AnkunftsSNeu-1;
		} else {
			AnkunftsMNeu = AnkunftMinute+0;
			AnkunftsSNeu2 = AnkunftsSNeu+0;
		}
		int StundenDiff = AnkunftsSNeu2-AbfahrtStunde;
		int MinutenDiff = AnkunftsMNeu-AbfahrtMinute;

		System.out.println("Ihre Fahrzeit beträgt: " + StundenDiff + " Stunde(n) und " + MinutenDiff + " Minute(n)");		
}
}
```


----------

