Übung 11 online!!!!

xilef
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 26. Jan 2008 04:47

Re: Übung 11 online!!!!

Beitrag von xilef » 26. Jan 2008 04:54

Ich hab mal eine Frage zu der Methode changeHeight(int x)

Diese soll für x-Werte die kleiner als 0 oder größer als die maximale Fluglhöhe sind eine AirborneComputerException werfen. Soweit stellt das auch kein Problem dar.
Wenn ich mir jetzt in der Klasse Test die Methode testroute() anschaue

Code: Alles auswählen

private static void testroute() throws AirborneComputerException,
			AirplaneException {
			test.changeHeight(-1000);
			test.gearDown();
			test.changeHeight(-400);
			System.out.println("Height is: " + test.getAirplane().getHeight());
			System.out.println("Located at: " + test.getAirplane().getAirport());
                         ... 
fällt mir auf, dass hier negative Höhen übergeben werden, die zumindest bei meiner Implementierung von changeHeight(int x) auch die entsprechende Exception wirft. Allerdings wird die hier nicht gefangen und landet führt somit zwangsläufig zur Terminierung.
Habe ich einfach meine Methode falsch implementiert oder ist das so gewollt?

Vielen Dank & schönes Wochenende!
xilef

Benutzeravatar
MelonTropic
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 6. Dez 2007 12:55

Re: Übung 11 online!!!!

Beitrag von MelonTropic » 26. Jan 2008 06:54

Das Flugzeug steigt erst um + 400 und + 1000, so das man auf eine Höhe von insgesamt 1400 kommt.
Anschließend sinkt das Flugzeug von 1400 wieder um -400 und -1000. Hatte es auch erst so wie du implementiert.

Wambolo
Computerversteher
Computerversteher
Beiträge: 381
Registriert: 18. Okt 2007 11:36

Re: Übung 11 online!!!!

Beitrag von Wambolo » 27. Jan 2008 13:15

s!mon hat geschrieben:

Code: Alles auswählen

	private static void testdelete() throws AirportException,
			AirborneComputerException, AirplaneException {
		test.deleteAirport("Köln");
		try {
			test.flyTo("Köln");
		} catch (AirborneComputerException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("-----Delete Test finished-----");
	}
Ich verstehe den Test nicht so ganz. Der Flughafen wird gelöscht und dann soll das Flugzeug dorthin fliegen. Das wird doch immer in einer Fehlermeldung enden?!
Auf diesen Zug würde ich gleich noch aufspringen, sollte es in Teilaufgabe 6.6 nicht eher heißen, wenn es keinen aktuellen Airport gibt an dem sich das Flugzeug befindet und die destination nicht im Computer gespeichert ist, dann werfe eine exception. Denn bis jetzt ist in der Aufgabenstellung dafür keine Exception vorgesehen, oder irre ich mich?
Interpreter/Parser reported on Nov 12, 2008 8:30:04 PM:
Number too big (102 > 42).

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von Stumpf.Alex » 27. Jan 2008 13:32

Ja klar kann man noch testen, ob ein Startflughafen eingegeben ist, aber das wird weder noch in der Übung noch im Test-Template verlangt.

Rickard
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 13. Jul 2006 15:21
Wohnort: Giessen

Re: Übung 11 online!!!!

Beitrag von Rickard » 28. Jan 2008 12:34

Ich habe eine frage.. habt ihr dass so implementiert wie es in die aufgabe steht?

aufgabe:

Write a method flyTo(String destination), which moves the airplane from its current location
to the destinated airport. This method has to check if the airplane has enough fuel for the
flight; if not, it should throw a AirborneComputerException. If no current location is selected,
you have to throw an AirplaneException.


Hab so in gefühl (stimmt mit die tests dann und mit eine frühere excpetion) dass die Excpetion anders rum sein soll:

zu wenig treibstoff -> AirplaneException
fehler mit flughafen ->AirborneComputer Exception

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 11 online!!!!

Beitrag von Krümelmonster » 29. Jan 2008 09:22

Code: Alles auswählen

test.deleteAirport("Köln");
		try {
			test.flyTo("Köln");
		} catch (AirborneComputerException e) {
			System.out.println(e.getMessage());
		}
Im diesem Test is ja das Problem, dass der Zielflughafen nicht mehr (im Speicher ;) ) existiert.
Und in Aufgabe 6.5 steht, dass setLocation() eine AirborneComputerException werfen soll, falls
der Zielflughafen nicht im Computer gespeichert ist.

Von daher sollten die Exceptions wohl stimmen:
nicht genug Sprit -> AirborneComputerException
kein Flughafen im Flugzeug gespeichert -> AirplaneException
Zielflughafen nicht im Speicher -> AirborneComputerException
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Rickard
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 13. Jul 2006 15:21
Wohnort: Giessen

Re: Übung 11 online!!!!

Beitrag von Rickard » 29. Jan 2008 11:17

du hast ja recht!

danke!

Benutzeravatar
Demmi
Kernelcompilierer
Kernelcompilierer
Beiträge: 423
Registriert: 1. Okt 2007 12:56
Wohnort: Darmstadt

Re: Übung 11 online!!!!

Beitrag von Demmi » 30. Jan 2008 01:00

1.
Das war imho ne sehr nette Java-Übung, die mal durchweg verständlich formuliert war und auch insgesamt Sinn gemacht hat. Manchmal evtl. ein bisschen viel Schreibarbeit (Stichwort get/set-Methoden fürs Airplane) aber insgesamt top

2.
Das spuckt meine Konsole nach den Tests aus, kann da mal jemand Bezug zu nehmen!?:

Code: Alles auswählen

Initialization
AirborneComputer initialized!
Start Airport initialized
Airplane initialized
-----Other airports initialized-----
Gear is out: true
Autopilot is on: false
Airplane is: Gnieob 747
Located at: Frankfurt
Consumption is: 2.75
Fuel is: 7000
Height is: 0
Max. Height is: 30000
Max. Speed is: 400
-----Basic Test finished-----
Height is: 400
Gear is out: false
Height is: 1400
Autopilot is on: true
Autopilot is on: false
Error Deploying Gear:
Too High!
-----Flight Test finished-----
Height is: 0
Located at: Frankfurt
Fuel is: 7000
Located at: Kassel
Fuel is: 6611
Located at: K�ln
Fuel is: 6220
Located at: Berlin
Fuel is: 5340
Located at: Frankfurt
Fuel is: 4081
-----Flight route test finished-----
Error Flying To Location:
Airport Not Found!
-----Delete Test finished-----
(Sollte das in irgendeiner Art und Weise zu viel verraten, dann halt bitte löschen)

3.
Die Berechnung des Verbrauchs:
Es kursieren ja teilweise minimal unterschiedliche Werte hier im Forum was aufs Casten und Runden zurückzuführen sein drüfte. Deshalb würde ich gern mal von offizieller Seite hören, wie es nun richtig sein muss.
Rein rechnerisch würde die erste Strecke 388.9087 Liter Treibstoff verbrauchen - Man hätte in Kassel also prinzipiell noch 6611.09 Liter im Tank. Da kommt dann im Endeffekt drauf an, ob man erst den Double-Wert abzieht und dann nach Integer castet, oder schon vorher. Oder ob man noch rundet vor dem casten, oder ob man generell abrundet (damit einem der Sprit nicht ausgeht), oder oder oder...
Man hat ja im Prinzip folgende Möglichkeiten
388.9 von double nach int casten ohne runden --> 388
388.9 runden und dann casten -->389
casten oder runden der 6611.09 --> 6611
Ich mein, große Differenzen sinds ja nicht (+/-1 pro Strecke), aber ich hätt halt gern mal nen Kommentar dazu.

Ansonsten bin ich mal gespannt, ob die 12 auch so lustig wird.
Saying that Java is nice because it works on all Plattforms is like saying that anal sex is nice because it works on all genders.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von Stumpf.Alex » 30. Jan 2008 01:06

Jop, ich hab das so ähnlich...nur bei deinem Spritverbrauch tuen sich Rundungsfehler auf. Bei mir ist wie bei den anderen der letzte Tankstand 4079.

EDIT: Sorry, hab Punkt 3 überlesen. Also ich berechne alles in double und caste direkt in int um. Runden halte ich für ein Flugzeug für nicht sinnvoll, da wenn man als aufrundet, man ja theoretisch zu viel Tankinhalt anzeigt und man in Extrembedingungen sich theoretisch leer fliegen könnte ohne das es der Bordcomputer merkt...und aus der Robotik weiß ich, dass kleine Rundungsfehler große Auswirkungen auf das gesamte System mit unverhersehbaren Ergebnissen haben kann.

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 11 online!!!!

Beitrag von Jo(h)nny » 30. Jan 2008 11:48

@Demmi
hmm... kann es sein, dass du bei der initialisierung eine exception überspringst??

Code: Alles auswählen

test = new AirborneComputer();
try{
test.gearDown();
}catch (NullPointerException npe){
System.out.println(npe.getMessage());
}
und zwar muss die gearDown hier eine nullpointerexception werfen, weil das flugzeug noch nicht initialisiert ist:)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 11 online!!!!

Beitrag von Krümelmonster » 30. Jan 2008 12:24

@Jo(h)nny
Wo nimmst du diese Testzeilen her?
In der Test.java stehen sie jedenfalls nicht.

@Demmi
Deine Ausgabe ist bis auf unwichtige Rundungsfehler zu meiner äquivalent.
(Heißt nicht, dass beide richtig sind).
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 11 online!!!!

Beitrag von Jo(h)nny » 30. Jan 2008 12:29

bei mir sieht die initialisierung so aus:

Code: Alles auswählen

private static void initialize() throws Exception {
		test = new AirborneComputer();
		try{
			test.gearDown();
		}catch (NullPointerException npe){
			System.out.println(npe.getMessage());
		}
		System.out.println("AirborneComputer initialized!");
		test.addAirport("Frankfurt", 10, 10);
		System.out.println("Start Airport initialized");
		gnieob = new Airplane("Gnieob 747", 30000, 7000, 2.75, 400, "Frankfurt");
		test.setAirplane(gnieob);
		System.out.println("Airplane initialized");
		test.addAirport("Kassel", 110, 110);
		test.addAirport("Berlin", 250, 400);
		test.addAirport("Köln", 0, 200);
		System.out.println("-----Other airports initialized-----");
	}
wann hast du denn die übung runtergeladen???

hab gerade geguckt, die haben das weggemacht:)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

evel
Erstie
Erstie
Beiträge: 19
Registriert: 16. Nov 2007 11:08

Re: Übung 11 online!!!!

Beitrag von evel » 30. Jan 2008 16:01

ich versteh das mit setAirplane nicht.
ich soll eine interne Variable namens targetPlane haben, die das aktuelle flugzeug enthält. aber wieso wird dann in der methode targetPlane übergeben?
oder sind die einfach gleich benannt?

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 11 online!!!!

Beitrag von Krümelmonster » 30. Jan 2008 16:16

Die sind beide gleich benannt. (Bzw. hat dich niemand gezwungen das gekapselte Objekt auch targetPlane zu nennen ;) )
setAirplane() brauchst du, damit das Flugzeug von außen instanziert werden kann, denn bei der Instanzierung von
AirborneComputer ist dieses null.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Re: Übung 11 online!!!!

Beitrag von ChRiZz88 » 30. Jan 2008 17:39

Hmm, ich hab ne

Code: Alles auswählen

java.util.ConcurrentModificationException
bei deleteAirport bzw. testdelete^^
Was will mir diese Exception sagen?
Ich geh mit ner for-Schleife durch die Liste und lösche das Element, das gleich des übergebenen Strings ist (hier: Köln). Wenn er nix löschen konnte, weil der Flughafen nicht in der Liste war, werfe ich ne Exception, mehr macht er an sich nicht.. Das Löschen mach ich mit

Code: Alles auswählen

airportMap.remove(item);
^^
Danke schon mal =)

Antworten

Zurück zu „Archiv“