Hallo zusammen,
ich habe folgende Fragestellung in dem Fach Programmieren bekommen und kann diese leider nicht beantworten. Könnt ihr mir vielleicht weiterhelfen? Das hier ist die Fragestellung:
Die Klasse Testklasse arbeitet mit den beiden Klassen Student und FalscheMatrikel-nummerException. Sie wird in der vorliegenden Form nicht erfolgreich kompiliert.
Zur korrekten Kompilierung gibt es zwei Varianten. Eine Variante benötigt eine Änderung in der Klasse Testklasse, die andere Variante benötigt eine Änderung der Klasse Fal-scheMatrikelnummerException.
Bitte geben Sie beide (einzelnen) Änderungsmöglichkeiten mit Begründung an.
Java:
publicclassTestklasse{publicvoidmethode(int nummer){
student s;try{
s =newStudent(nummer);}catch(FalscheMatrikelnummerException fme){System.out.println(fme);throw fme;}}}publicclassFalscheMatrikelnummerExceptionextendsException{publicStringtoString(){return “Matrikelnummer nicht korrekt!”;}}publicclassStudent{privateint matrikelnummer;publicStudent(int matrikelnummer);throwFalscheMatrikelnummerException{if(matrikelnummer >0){this.matrikelnummer = matrikelnummer;}else{thrownewFalscheMatrikelnummerException();}}}
Es wäre nett, wenn mir jemand helfen könnte. Es kann sein, dass ich vielleicht ein Rechtschreibfehler reingebaut habe, aber ich hoffe, dass es vom Verständnis her klar ist.
Ich sehe hier nur Fehler, die zwingend behoben werden müssen. Mit Varianten tue ich mich da eher schwer, außer … Nun, das sehen wir gleich.
Eine Zeichenkette wird von "" eingeschlossen, nicht von “”.
Die Klasse student gibt es nicht, es gibt nur Student.
Die Zeile in Student ist nichts: „public Student (int matrikelnummer);“.
Die Zeile danach ist ebenfalls nichts: „throw FalscheMatrikelnummerException {“.
Auch wenn man das Semikolon aus 3 entfernt, ist die Zeile in 4 falsch; es muß throws heißen.
In der Klasse Testklasse kann mit der Anweisung „throw fme;“ nichts geworfen werden, weil die Ausnahme in der Methodensignatur fehlt.
In Punkt 6 könnte ich mir eine Variante vorstellen. Entweder wirft man die Ausnahme nicht, oder man gibt im Methodenkopf an, daß die Methode solch eine Ausnahme werfen könnte (public … throws FalscheMatrikelnummerException {).
Welche Fehler davon von Dir kommen und welche zur Aufgabe gehören, mußt Du nun selbst herausfinden.
Oooooookay. Ich werde morgen nochmal zum Lehrer gehen und nachfragen, was damit genau gemeint ist. Ich glaub, ich hab da einfach nur was falsch abgeschrieben. Werde dann direkt berichten.
Könnt ihr mir verraten, warum die Ausgabe bei dem nachfolgenden Code so ist :
7
Umsatz = 1 anzahl = 0
Die erste Zeile mit der 7 ist ja noch verständlich, aber warum wird toString ausgeführt? ICh weiß, klingt blöd aber, ich brauche eine Begründung dafür und habe keine Ahnung warum.
in der format-Methode wird ein Formatter erstellt, der wiederum eine format-Methode aufruft die dann letztendlich print() aufruft für dein objekt. Nunja und print, sowie println rufen auf dem Objekt toString auf.
Jedes Objekt hat immer eine Methode toString(). Wenn man sich ein eigenes Objekt schreibt, so wie hier Aufgabe4, kann man die Methode überschreiben und selbst bestimmen, welche Zeichenkette sie zurückgeben soll.
Die Methoden zur Ausgabe auf der Konsole rufen von jedem Objekt, das man ihnen übergibt (hier eins), die Methode toString() auf, um die zurückgegebene Zeichenkette dann ausgeben zu können.
Vielen vielen Dank.
Es sind immer so Kleinigkeiten, wo ich nicht weiß, warum etwas so ist. Ich habe hier mal die Aufrufreihenfolge markiert. Ich weiß, dass der static initializer IMMER als erstes ausgeführt wird, aber warum kommt dann der erste Teil und nicht die Main-Methode? Welche Begründung steckt dahinter?
Java:
publicclassAufgabe10{{System.out.format("1");//3. ...}static{System.out.format(",");//1. }publicAufgabe10(){System.out.format("0");// 4. }publicstaticvoid main (String[] args){System.out.format("test");//2Aufgabe10I=newAufgabe10();}}