D
Destiny1985
Gast
Ich spiele gerade etwas rum um ein paar Sachen auszuprobieren und bin jetzt auf folgendes gestoßen. ich habe die Klasse Student und StudentenTest, hier erstmal die betreffenden Teile der beiden Klassen
So, das Problem ist das "Phantom des Campus" ^^ In dem static-Block belege ich dieses Objekt ja mit Werten und will es dann ganz normal, wie alle anderen Objekte, in der Form
ausgeben. Das funktioniert aber nícht, er sagt mir in jeder dieser 3 Zeilen "PHANTOM kann nicht aufgelöst werden"...was mache ich falsch ?
mfg
Code:
public class StudentenTest {
public static void main(String[] args) {
/** Erzeugen von Studentenobjekten */
Student studi1 = new Student();
Student studi2 = new Student(1981);
Student studi3 = new Student(2000);
/** Zuweisung von Namen und Matrikelnummern an die Studentenobjekte */
studi1.setName("Peter Parker");
studi1.setNummer(11111);
studi1.setFach(3);
studi2.setName("Lana Lane");
studi2.setNummer(55555);
studi2.setFach(7);
studi3.setName("Clark Kent");
studi3.setNummer(77777);
studi3.setFach(1);
/** Holen der Namen und Nummern der Studentenobjekte und Speicherung in Variablen */
String studentenName1 = studi1.getName();
int studentenNummer1 = studi1.getNummer();
int studentenFach1 = studi1.getFach();
int geburtsJahr1 = studi1.getGeburtsJahr();
String studentenName2 = studi2.getName();
int studentenNummer2 = studi2.getNummer();
int studentenFach2 = studi2.getFach();
int geburtsJahr2 = studi2.getGeburtsJahr();
String studentenName3 = studi3.getName();
int studentenNummer3 = studi3.getNummer();
int studentenFach3 = studi3.getFach();
int geburtsJahr3 = studi3.getGeburtsJahr();
String phantomName = PHANTOM.getName();
int phantomNummer = PHANTOM.getNummer();
int phantomJahr = PHANTOM.getGeburtsJahr();
/** Ausgabe von Name und Matrikelnummer der Studentenobjekte */
System.out.println("\nDas Phantom heisst " + phantomName);
System.out.println("Die Nummer des Phantoms ist " + phantomNummer);
System.out.println("Das Phantom ist im Jahr " + phantomJahr + " geboren");
System.out.println("\nName des 1. Studenten: " + studentenName1);
System.out.println("Nummer des 1. Studenten: " + studentenNummer1);
System.out.println("Fach des 1. Studenten: " + studentenFach1);
System.out.println("Geburtsjahr des Studenten: " + geburtsJahr1);
System.out.println("\nName des 2. Studenten: " + studentenName2);
System.out.println("Nummer des 2. Studenten: " + studentenNummer2);
System.out.println("Fach des 2. Studenten: " + studentenFach2);
System.out.println("Geburtsjahr des Studenten: " + geburtsJahr2);
System.out.println("\nName des 3. Studenten: " + studentenName3);
System.out.println("Nummer des 3. Studenten: " + studentenName3);
System.out.println("Fach des 3. Studenten: " + studentenFach3);
System.out.println("Geburtsjahr des Studenten: " + geburtsJahr3);
/** Ausgabe des Studentenzählers */
System.out.println("\nStundenten insgesamt: " + Student.getStudentenZaehler());
System.out.println("\n" + studi1.toString());
System.out.println(studi2.toString());
System.out.println(studi3.toString());
}
}
Code:
public class Student {
/** Der Name des Studenten */
private String name;
/** Die Matrikelnummer des Studenten */
private int nummer;
/** Zaehler für die Studentenobjekte */
private static int studentenZaehler;
/** Studienfach des Studenten */
private int fach;
/** Das Geburtshahr des Studenten */
private int geburtsJahr;
/** Konstanten für das die einzelnen Studienfächer */
public static final int MATHEMATIKSTUDIUM = 1;
public static final int INFORMATIKSTUDIUM = 2;
public static final int ARCHITEKTURSTUDIUM = 3;
public static final int WIRTSCHAFTLICHESSTUDIUM = 4;
public static final int BIOLOGIESTUDIUM = 5;
public static final int GESCHICHTSSTUDIUM = 6;
public static final int GERMANISTIKSTUDIUM = 7;
public static final int POLITOLOGIESTUDIUM = 8;
public static final int PHYSIKSTUDIUM = 9;
/** Diese Konstante stellt das Phantom dar */
public static final Student PHANTOM;
/** Rückgabe des Studentenname als String */
public String getName() {
return this.name;
}
/** Namen des Studenten auf einen übergebenen Wert setzen */
public void setName(String name) {
this.name = name;
}
/** Rückgabe der Matrikelnummer des Studenten als Integer */
public int getNummer() {
return this.nummer;
}
/** Matrikelnummer des Studenten auf einen übergebenen Wert setzen */
public void setNummer(int n) {
int alteNummer = nummer;
nummer = n;
if (!validateNummer()) { // Neue Nummer ungültig
System.out.println("Die Nummer ist ungültig, Nummer wird zurückgesetzt");
nummer = alteNummer;
}
}
/** Überprüfung der Matrikelnummer auf ihre Gültigkeit */
public boolean validateNummer() {
return
(nummer >= 10000 && nummer <= 99999 && nummer % 2 != 0);
}
/** Gibt die Anzahl der erzeugten Studentenobjekte zurück */
public static int getStudentenZaehler() {
return studentenZaehler;
}
/** Rückgabe des Fachs des Studenten als Integer */
public int getFach() {
return fach;
}
/** Fach des Studenten wird auf übergebenen Wert gesetzt */
public void setFach(int fach) {
this.fach = fach;
}
/** Gibt eine textuelle Beschreibung dieses Studenten aus */
public String toString() {
String studentenAusgabe = name + " (" + nummer + ")";
switch (fach) {
case MATHEMATIKSTUDIUM:
return studentenAusgabe + " ist ein Mathestudent.";
case INFORMATIKSTUDIUM:
return studentenAusgabe + " ist ein Informatikstudent.";
case ARCHITEKTURSTUDIUM:
return studentenAusgabe + " ist ein Architekturstudent.";
case WIRTSCHAFTLICHESSTUDIUM:
return studentenAusgabe + " ist ein Wirtschaftswissentschaftenstudent.";
case BIOLOGIESTUDIUM:
return studentenAusgabe + " ist ein Biologiestudent.";
case GESCHICHTSSTUDIUM:
return studentenAusgabe + " ist ein Geschichtsstudent.";
case GERMANISTIKSTUDIUM:
return studentenAusgabe + " ist ein Germanistikstudent.";
case POLITOLOGIESTUDIUM:
return studentenAusgabe + " ist ein Politologiestudent.";
case PHYSIKSTUDIUM:
return studentenAusgabe + " ist ein Physikstudent.";
default:
return studentenAusgabe + " hat ein unbekanntes Studienfach.";
}
}
/** Argumentloser Kontruktor */
public Student() {
studentenZaehler++;
geburtsJahr = 1985;
}
/** Kontruktor, bei dem sich das Geburtsjahr setzen lässt */
public Student(int geburtsJahr) {
studentenZaehler++;
this.geburtsJahr = geburtsJahr;
}
/** Gibt das Geburtsjahr des Studenten als Integer zurück */
public int getGeburtsJahr() {
return geburtsJahr;
}
/** Erzeugung eines "Phantom-Studenten" mittels eines static-Blockes */
static {
PHANTOM = new Student(1735);
PHANTOM.setName("Erik le Phant");
PHANTOM.nummer = -12345;
// Zurücksetzen des Studentenzählers auf 0, es soll ja ein Phantom sein
studentenZaehler = 0;
}
}
So, das Problem ist das "Phantom des Campus" ^^ In dem static-Block belege ich dieses Objekt ja mit Werten und will es dann ganz normal, wie alle anderen Objekte, in der Form
Code:
String phantomName = PHANTOM.getName();
int phantomNummer = PHANTOM.getNummer();
int phantomJahr = PHANTOM.getGeburtsJahr();
ausgeben. Das funktioniert aber nícht, er sagt mir in jeder dieser 3 Zeilen "PHANTOM kann nicht aufgelöst werden"...was mache ich falsch ?
mfg