hallo leute,
mein problem ist ein bischen komplexer als die überschrift vermuten lässt...
weiss nicht ob es wirklich ein anfängerproblem ist aber weiss nicht wo ich es sonst hinschreiben soll
so
ich habe ein package schul
darin befinden sich die klassen Person, Pupil und Teacher
und ein main programm schul...
sieht folgendermaßen aus:
es wird ganz links vor bzw. der nachname des lehrers eingegeben, mit klick auf lehrer hinzufügen wird dieser in eine LinkedList gespeichert sowie in die awt.List übernommen.
bei schüler hinzufügen muss ein lehrer ausgewählt sein dem dieser schüler zugewiesen wird...
jetzt zu meinem Problem:
ich muss eine sortierung einbauen,
ich sollte beispielsweise nach nachname sortieren wie an den buttons zu erkennen ist...
dabei sollte die linked list sortiert werden, zu beachten das es vom Typ Teacher sein muss damit keine probleme mit dem lehrer zugewiesenen schülern auftreten...
danach sollte awt.list geleert und mit sortiertem inhalt wieder aufgefüllt werden
mein problem ist ein bischen komplexer als die überschrift vermuten lässt...
weiss nicht ob es wirklich ein anfängerproblem ist aber weiss nicht wo ich es sonst hinschreiben soll
so
ich habe ein package schul
darin befinden sich die klassen Person, Pupil und Teacher
und ein main programm schul...
sieht folgendermaßen aus:

es wird ganz links vor bzw. der nachname des lehrers eingegeben, mit klick auf lehrer hinzufügen wird dieser in eine LinkedList gespeichert sowie in die awt.List übernommen.
bei schüler hinzufügen muss ein lehrer ausgewählt sein dem dieser schüler zugewiesen wird...
jetzt zu meinem Problem:
ich muss eine sortierung einbauen,
ich sollte beispielsweise nach nachname sortieren wie an den buttons zu erkennen ist...
dabei sollte die linked list sortiert werden, zu beachten das es vom Typ Teacher sein muss damit keine probleme mit dem lehrer zugewiesenen schülern auftreten...
danach sollte awt.list geleert und mit sortiertem inhalt wieder aufgefüllt werden
Code:
package schul;
public class Person
{
//fields
protected String nachname = null;
protected String vorname = null;
// c'tor
public Person(String nachname, String vorname)
{
this.nachname = nachname;
this.vorname = vorname;
}
// methods
public String getNachname()
{
return nachname;
}
public void setNachname(String nachname)
{
this.nachname = nachname;
}
public String getVorname()
{
return vorname;
}
public void setVorname(String vorname)
{
this.vorname = vorname;
}
public String getName()
{
return nachname + " " + vorname;
}
// overrides
public String toString()
{
return "Ich bin " + vorname + " " + nachname + ".";
}
}
Code:
package schul;
public class Pupil extends Person
{
// fields
private short note = 0;
// sub-class for exception
public class InvalidNoteException extends Exception
{
// c'tor
public InvalidNoteException()
{
}
// override toString
public String toString()
{
return "Diese Note ist nicht zugelassen!";
}
}
// c'tor 1
public Pupil(String nachname, String vorname)
{
super(nachname, vorname);
}
// c'tor 2
public Pupil(String nachname, String vorname, short note) throws schul.Pupil.InvalidNoteException
{
super(nachname, vorname);
if (note < 1 || note > 5)
throw new InvalidNoteException();
this.note = note;
}
// methods
public short getNote()
{
return note;
}
public void setNote(short note) throws schul.Pupil.InvalidNoteException
{
if (note < 1 || note > 5)
throw new InvalidNoteException();
this.note = note;
}
public void resetNote()
{
note = 0;
}
// overrides
public boolean equals(Object obj)
{
boolean bRes = false;
if (obj.getClass().equals(Pupil.class))
{
Pupil pupil = (Pupil)obj;
if (nachname.equals(pupil.nachname) && vorname.equals(pupil.vorname) && note == pupil.note)
bRes = true;
}
return bRes;
}
public String toString()
{
String stRes = super.toString();
if (note != 0)
{
stRes = stRes.replace('.', ' ');
stRes += "und habe einen " + note + "er bekommen.";
}
return stRes;
}
}
Code:
package schul;
import java.util.*;
public class Teacher extends Person
{
//fields
LinkedList teachedPupils = null;
short wochenstunden;
public class InvalidWochenstundenException extends Exception {
public InvalidWochenstundenException()
{
}
public String toString() {
return "Wochenstunden für Lehrer sind ungültig";
}
}
// c'tor
public Teacher(String nachname, String vorname)
{
super(nachname, vorname);
teachedPupils = new LinkedList();
}
public void setWochenstunden(short ws) {
this.wochenstunden=ws;
}
// methods
// adding pupils
public void addPupil(Pupil pupil)
{
teachedPupils.add(pupil);
}
// removing pupils
public boolean removePupil(Pupil pupil)
{
return teachedPupils.remove(pupil);
}
public Pupil removePupil(int index) throws IndexOutOfBoundsException
{
return (Pupil)teachedPupils.remove(index);
}
// additional infos
public Pupil getPupil(int index) throws IndexOutOfBoundsException
{
return (Pupil)teachedPupils.get(index);
}
public boolean containsPupil(Pupil pupil)
{
return teachedPupils.contains(pupil);
}
public int pupilCount()
{
return teachedPupils.size();
}
public String[] getNoten()
{
Pupil pupil;
ArrayList Arr = new ArrayList(10);
for (int i = 0; i < teachedPupils.size(); i++)
{
pupil = (Pupil)teachedPupils.get(i);
if (pupil.getNote() != 0)
Arr.add(pupil.getName() + " ... Note: " + pupil.getNote());
}
return (String[])Arr.toArray(new String[1]);
}
// for practising with strings, we use (deprecated) methods
public String[] showNotenArr() // deprecated
{
// we use the same algorithm but do only use the toString-method to get the necessary data
ArrayList Arr = new ArrayList(10);
String[] pupilData;
for (int i = 0; i < teachedPupils.size(); i++)
{
pupilData = teachedPupils.get(i).toString().split(" ");
if (pupilData.length != 4) // then the pupil does have a Note
Arr.add(pupilData[3] + " " + pupilData[2] + " ... Note: " + pupilData[7].charAt(0));
}
return (String[])Arr.toArray(new String[1]);
}
public String showNoten() // deprecated
{
// we want to get the same result as in the previous method but in one string
StringBuffer Buffer = new StringBuffer(512);
String[] pupilData;
for (int i = 0; i < teachedPupils.size(); i++)
{
pupilData = teachedPupils.get(i).toString().split(" ");
if (pupilData.length != 4) // then the pupil does have a Note
{
Buffer.append(pupilData[3]);
Buffer.append(" ");
Buffer.append(pupilData[2]);
Buffer.append(" ... Note: ");
Buffer.append(pupilData[7].charAt(0));
Buffer.append("\n");
}
}
return Buffer.toString();
}
// overrides
public boolean equals(Object obj)
{
boolean bRes = false;
if (obj.getClass().equals(Teacher.class))
{
Teacher teacher = (Teacher)obj;
if (vorname.equals(teacher.vorname) && nachname.equals(teacher.nachname))
bRes = true;
}
return bRes;
}
public String toString()
{
return vorname + " " + nachname;
}
}