Ich muss für die Uni ein Zeitmanagement System progenn und gerate dort auf einige Schwierigkeiten. Hoffe darauf dass mir jemand Die fehler aufzeigen kann und ein bisschen erklären kann was geändert werden muss:
Ich habe Probleme mit dem Löschen eines Läufers. Funktioniert einfach nicht! (Delete Attendee)
Dann kann ich die Zwischenzeiten nicht richtig auslesen, da kommt immer eine 0 Pointer Warnung, was mache ich da Falsch? (getTimeStampsof)
Und bei der Size habe ich auch noch 0 Ahnung wie ich das lösen soll. Hat da Jemand eine Idee?
Ich danke vielmals für die Hilfe. Hoffe ihr habt mitleid mit einen lernenden Studenten, der euch dann gerne hilft sobald ich voll drin bin
Ich habe Probleme mit dem Löschen eines Läufers. Funktioniert einfach nicht! (Delete Attendee)
Dann kann ich die Zwischenzeiten nicht richtig auslesen, da kommt immer eine 0 Pointer Warnung, was mache ich da Falsch? (getTimeStampsof)
Und bei der Size habe ich auch noch 0 Ahnung wie ich das lösen soll. Hat da Jemand eine Idee?
Ich danke vielmals für die Hilfe. Hoffe ihr habt mitleid mit einen lernenden Studenten, der euch dann gerne hilft sobald ich voll drin bin

Java:
public class MarathonTimeManagement {
private Attendee start;
public MarathonTimeManagement() {
// Konstruktor f?ºr leere Liste
start = null;
}
public int getSize() //gibt die Anzahl der Teilnehmer in der Liste zurück
{
return 1;
}
public boolean addAttendee(Attendee attendee) //fügt einen Teilnehmer(knoten) aufsteigend sortiert nach dessen Namen in die Liste ein. Die Methode gibt true zurück falls das Einfügen erfolgreich war. Falls bereits ein Teilnehmer mit gleichem Namen in der Liste vorhanden ist, wird der neue Teilnehmer nicht eingefügt, und es wird false zurückgegeben.
{
// 1. Fall: Liste ist noch leer
if (start == null) {
start = attendee;
return true;
}
boolean ok = false;
// 2. Fall: neues Element kommt an den Anfang der Liste
if(start.getName().compareTo(attendee.getName())==0)
{
return false;
}
if(start.getName().compareTo(attendee.getName())>0)
{
ok = true;
}
if (ok == true ) {
attendee.next = start;
start = attendee;
return true;
}
// 3. Fall: Liste durchlaufen
Attendee letzter = start;
Attendee aktuell = start.next;
while ((aktuell != null) && (aktuell.getName().compareTo(attendee.getName()) < 0)) {
if(aktuell.getName().compareTo(attendee.getName()) == 0)
{
return false;
}
aktuell = aktuell.next;
letzter = letzter.next;
}
// gefunden, jetzt einfügen
letzter.next = attendee;
if (aktuell != null) { // neu ist nicht letztes Element
attendee.next = aktuell;
}
return true;
}
public void deleteAttendee(String name) //löscht den Teilnehmer mit dem entsprechenden Namen falls dieser existiert aus der Liste.
{
Attendee last = start;
Attendee aktuell = last.next;
for(;aktuell.getName().equals(name) != true && aktuell!= null && last.getName().equals(name)!= true;aktuell=aktuell.next)
{
}
if(last == start)
{
start = aktuell.next;
}
else
{
last.next = last.next.next;
}
}
public Attendee getAttendee(String name) //gibt eine Referenz auf den Teilnehmer mit dem entsprechenden Namen zurück (falls vorhanden, sonst null).
{
Attendee aktuell = start;
while(aktuell.next != null)
{
if(aktuell.getName().equals(name) == true)
{
return aktuell;
}
aktuell = aktuell.next;
}
return null;
}
public void addSplitTimeTo(String name, TimeStamp time) //fügt eine Zwischenzeit (am Ende der Zwischenzeitenliste) zum entsprechenden Teilnehmer hinzu. Verwenden Sie zum Finden des Teilnehmers wenn möglich eine schon implementierte Methode.
{
Attendee attendee=getAttendee(name);
if(attendee.anzahlZwischenZeiten<=0){
attendee.timeStamps=time;
}else{
// TimeStamp ts = new TimeStamp(attendee.timeStamps.getTimeStamp());
TimeStamp current = new TimeStamp(attendee.timeStamps.getTimeStamp());
TimeStamp previous = new TimeStamp(attendee.timeStamps.getTimeStamp());
while(current != null ){
previous = current;
current = current.next;
}//while
attendee.timeStamps.next = time;
System.out.println("Ausgabe:"+attendee.timeStamps.next);
}//else
attendee.anzahlZwischenZeiten++;
}//Methode
public void printAttendees() //gibt die Namen der Teilnehmer aus.
{
Attendee aktuell = start;
while (aktuell != null) {
System.out.println(aktuell.getName());
aktuell = aktuell.next;
}
}
public void printTimeStampsOf(String name) //gibt die Zwischenzeiten des entsprechenden Teilnehmers aus
{
Attendee aktuell = start;
int i = 0;
System.out.println(aktuell.anzahlZwischenZeiten);
while(aktuell.next != null)
{
if(aktuell.getName().equals(name) == true)
{
while(aktuell.timeStamps != null)
{
System.out.println(aktuell.timeStamps);
aktuell.timeStamps = aktuell.timeStamps.next;
}
}
aktuell = aktuell.next;
}
return;
}
public void printAttendeeTimeStamps() //Gibt die Teilnehmer sowie deren Zwischenzeiten aus. (Verwenden Sie eine private Methode zum Ausgeben der Zwischenzeiten des entsprechenden Teilnehmers).
{
}
//public long[] getSplitTimes(String name) //gibt ein Array mit den Zwischenzeiten als long-Werte des entsprechenden Teilnehmers zurück (falls vorhanden).
{
}
public double getAverageSplitTime(String name) //Berechnet die Durchschnittszeit (der einzelnen Zwischenzeiten) des entsprechenden Teilnehmers. Verwenden Sie zum Auslesen der Zwischenzeiten des Teilnehmers wenn möglich eine schon implementierte Methode.
{
return 1;
}
//private helper methods
private void printTimeStampsOf(Attendee attendee) //gibt die Zwischenzeiten des übergebenen Teilnehmers aus.
{
}
public static void main(String[] args) {
System.out.println("Name des Läufers 1 eingeben:");
String s = Input.readString();
// starte mit leerer Liste
MarathonTimeManagement m = new MarathonTimeManagement();
Attendee neu = new Attendee(s);
m.addAttendee(neu);
System.out.println("Name des Läufers 2 eingeben:");
String x = Input.readString();
Attendee neu2 = new Attendee(x);
m.addAttendee(neu2);
System.out.println("Name des Läufers 3 eingeben:");
String y = Input.readString();
Attendee neu3 = new Attendee(y);
m.addAttendee(neu3);
// gib die Liste aus
m.printAttendees();
// m.deleteAttendee("Walex");
TimeStamp time = new TimeStamp(100021323);
m.addSplitTimeTo("Alex",time);
TimeStamp time1 = new TimeStamp(200021323);
m.addSplitTimeTo("Alex",time1);
m.printTimeStampsOf("Alex");
TimeStamp time2 = new TimeStamp(300021323);
m.addSplitTimeTo("Alex",time2);
m.printTimeStampsOf("Alex");
}
}
Java:
public class Attendee {
private String name;
public int anzahlZwischenZeiten = 0;
public Attendee next=null;
public TimeStamp timeStamps = null;
public Attendee(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Java:
public class TimeStamp {
public TimeStamp next = null;
private long time;
public TimeStamp(long time){
this.time = time;
}
public void print(){
System.out.println(time);
}
public long getTimeStamp(){
return time;
}
public String toString(){
return Long.toString(time);
}
}