# Codekorrektur



## wuby (9. Nov 2010)

hallo zusammen,

haben ein übungsblatt bekommen und ich komm hier irgendwie nicht weiter.
das ist die aufgabe:

Ernie und Bert haben sich ebenfalls an der Klasse Interval versucht. Voller Tatendrang
haben sie die Klasse um weitere sinnvolle Funktionalitat erganzt. Leider haben Sie
nur noch wenig Zeit, bevor sie die Aufgabe abgeben mussen. Konnen Sie Ernie und Bert
bei der Fehlersuche helfen? Geben Sie zu jedem Fehler, den Sie nden, die Zeilennummer,
eine Begrundung sowie einen Korrekturvorschlag an!

[JAVA=42]
 public Interval division(Interval B){
	 int anyNumber = 0;
	 if(not B.contains(anyNumber))
		 System.out.println("Das Intervall " + B + " enth¨alt nicht die Zahl "+
				 anyNumber + ".");
	 if(not B.contains(anyNumber) & 1/B.getRight() > 0 & 1/B.getLeft() > 0)
		 System.out.println("Das Intervall " + B + " enth¨alt weder den Wert "+
				 anyNumber + " noch sind die Kehrwerte des Intervalls negativ.");
	 return multiplication(new Interval( 1/B.getRight(),1/B.getLeft()));
 }
 public boolean contains(Interval B) {
 return this.left <= B & this.getRight() >= B;
 }
 public boolean contains(double b) {
 if(this.getLeft() < b & this.getRight() > b)
 return false;
 }
 public boolean equals(Interval B) {
 return B != null & this.contains(B) & B.contains(this);
 }
[/code]


so ein paar sachen habe ich gefunden:
gibt 2 funktionen contains
in zeile 3 geht das "not B." nicht
in zeile 4 kann bei der ausgabe "+ B + " nciht einfach so stehnbleiben, oder?
habt ihr weitere idee??


----------



## SlaterB (9. Nov 2010)

deine Funde passen nicht so recht zu den Zeilenangaben im Code-Block,

> gibt 2 funktionen contains
grundsätzlich schon möglich

---

wie wärs damit, den Code in ein Java-Programm einzufügen und den Compiler noch mehr finden zu lassen?
fehlende Klassen wie Interval könntest du schnell dazuschreiben bzw. die ist wohl vorausgesetzt


----------



## Haave (9. Nov 2010)

wuby hat gesagt.:


> habt ihr weitere idee??


Die Einrückung ist ein Graus :lol:

Okay, ernsthaft:


wuby hat gesagt.:


> in zeile 3 geht das "not B." nicht


Das stimmt, aber was müsste da stehen, damit es funktioniert?



wuby hat gesagt.:


> in zeile 4 kann bei der ausgabe "+ B + " nciht einfach so stehnbleiben, oder?


Doch, aber dann sollte die toString()-Methode vlt überschrieben werden, sonst wird da nur Klassenname+Speicheradresse stehen. Wenn das nichts ausmacht, kannst du es auch so stehenlassen.

Dann würd ich Abstand davon nehmen, einen if-Block ohne geschweifte Klammern stehen zu lassen. Da ist zwar momentan nur eine Zeile unten drunter, was so auch funktioniert, aber wenn du dann noch ne Zeile anfügst und dann keine Klammern oben hinzufügst, kann das ins Auge gehen.


----------



## wuby (9. Nov 2010)

weitere mögliche Fehler gefunden:

Zeile 53: this.getLeft () statt this.left
in der zweiten zeile: sollte das nicht lieber eine double zahl sein, da später bei contains diese mit doubles verglichen wird?


----------



## SlaterB (9. Nov 2010)

um auch was  beizutragen:
in der Zeile 53 ist ja viel interessanter, dass left mit B an sich verglichen wird, mit dem gesamten Intervall-Objekt

Variablen sollten übrigens generell kleingeschrieben werden, sag das Ernie und Bert


----------



## wuby (9. Nov 2010)

Haave hat gesagt.:


> Okay, ernsthaft:
> 
> Das stimmt, aber was müsste da stehen, damit es funktioniert?



sollte das nicht "if ( !B.contains(anyNumber))" heißen


----------



## Haave (9. Nov 2010)

wuby hat gesagt.:


> sollte das nicht "if ( !B.contains(anyNumber))" heißen


Ja, richtig.


----------



## Marcinek (9. Nov 2010)

Das ist der komplette Quellcode?

Woher weißt, du dass es kein getLeft gibt?


----------



## wuby (9. Nov 2010)

Marcinek hat gesagt.:


> Das ist der komplette Quellcode?
> 
> Woher weißt, du dass es kein getLeft gibt?



ich denke mal, da es in der gleihen zeile heißt: this.getRight() sollte es hier auch this.getLeft heißen...


----------



## Marcinek (9. Nov 2010)

wuby hat gesagt.:


> ich denke mal, da es in der gleihen zeile heißt: this.getRight() sollte es hier auch this.getLeft heißen...



Kann man aber auch nur annehmen.


----------



## Fedinho (11. Nov 2010)

Wenn man nicht nur die Funktionalität verbessern soll, vllt noch anyNumber umbennen.


----------



## Marcinek (11. Nov 2010)

[XML] public boolean contains(Interval B) {
 return this.left <= B & this.getRight() >= B;
 }
[/XML]

Objekte lassen sich nicht mit > < vergleichen.

Da müsste sowas sein, wie B.getLeft() ..


----------



## wuby (12. Nov 2010)

im anhang habe ich mal die lösng hochgeladen, die wir abgegeben haben... gucken war bei rauskommt...


----------

