dchrist1 Geschrieben 13. Januar 2010 Geschrieben 13. Januar 2010 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. public class Testklasse{ public void methode(int nummer) { student s; try { s = new Student(nummer); } catch (FalscheMatrikelnummerException fme) { System.out.println(fme); throw fme; } } } public class FalscheMatrikelnummerException extends Exception { public String toString() { return “Matrikelnummer nicht korrekt!â€; } } public class Student { private int matrikelnummer; public Student (int matrikelnummer); throw FalscheMatrikelnummerException { if (matrikelnummer > 0) { this.matrikelnummer = matrikelnummer; } else { throw new FalscheMatrikelnummerException(); } } } 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. Viele Grüße D.Christ Zitieren
MartinSt Geschrieben 13. Januar 2010 Geschrieben 13. Januar 2010 weißt du wo die genannten Compile Fehler auftreten? Zitieren
dchrist1 Geschrieben 13. Januar 2010 Autor Geschrieben 13. Januar 2010 Nein, kann ich leider nicht sagen Zitieren
MartinSt Geschrieben 13. Januar 2010 Geschrieben 13. Januar 2010 na dann solltest du wohl mal versuchen den Code zu compilieren Zitieren
dchrist1 Geschrieben 13. Januar 2010 Autor Geschrieben 13. Januar 2010 So... anscheinend ist dort wohl irgendwie der Wurm drin. Ich werde morgen meinen Lehrer nochmal fragen. Wahrscheinlich habe ich es falsch abgeschrieben. ABer nochmal zu einer funktionierenden Aufgabe. Aus welchem Grund, wird das Programm in der Reihenfolge aufgeführt? Ich habe das mal in die Kommentare geschrieben. Das Static initializer als erstes ausgeführt werden, verstehe ich ja noch, aber warum dann zuerst 2. ?? Ich brauche eine gute Begründung. public class Aufgabe04 { { System.out.format("1"); //2 . ... } static { System.out.format(","); //1 . static initializer wird bei erzeugung als erstes ausgeführt } public Aufgabe04() { System.out.format("0"); // 3. } public static void main (String [] args) { System.out.format("test") ; Aufgabe04 I = new Aufgabe04(); } } Viele Grüße Zitieren
kingofbrain Geschrieben 14. Januar 2010 Geschrieben 14. Januar 2010 Einen unbenannten Block in einer Java Klasse habe ich zwar in der Praxis noch nie gesehen, aber Deine kommentierte Reihenfolge ist falsch. Wenn ich die Klasse ausführe, dann erhalte ich folgendes Ergebnis: ,test10 Peter Zitieren
LadyPreis Geschrieben 14. Januar 2010 Geschrieben 14. Januar 2010 was ja auch logisch ist. beim ersten aufruf der ersten statischen Methode (in diesem Fall die "main") werden vorher die statischen Variablen initialisiert bzw die statischen Konstruktoren aufgerufen. Im Beispiel also static { System.out.format(","); //1 . static initializer wird bei erzeugung als erstes ausgeführt } Dann wird der eigentliche Aufruf ausgeführt public static void main (String [] args) { System.out.format("test") ; Aufgabe04 I = new Aufgabe04(); } und dann die ganzen Aufrufe aus der Methode selbst, also { System.out.format("1"); //2 . ... } und public Aufgabe04() { System.out.format("0"); // 3. } Anders würde es aussehen, wenn die main-Methode zum Beispiel in einer anderen Klasse wäre. Beim Aufruf der Main wird dann noch nicht auf die Klasse "Aufgabe04" zugegriffen und damit auch nicht auf deren statische Member Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.