LinkedList<> in Java

Liebe/-r Experte/-in,

Ich habe eine aufgabenstellung zu lösen und brauche an einer stelle hilfe.

Das ist mein QuellCode:

import java.util.*;

class Netzwerk
{
private String netzwerkName;
private int anzahlBenutzer;
private LinkedList benutzerName;

String str;

public Netzwerk(String netzwerkName, int anzahlBenutzer)
{
this.netzwerkName=netzwerkName;
this.anzahlBenutzer=anzahlBenutzer;
benutzerName=new LinkedList();
}

public String getNetzwerkName()
{
return netzwerkName;
}

public int getAnzahlBenutzer()
{
return anzahlBenutzer;
}

//das habe ich selber versucht
public void benutzerAnmelden(LinkedList benutzerName)
{
if(benutzerName.size()>anzahlBenutzer)
{
System.out.println(„Geht nicht“);
}
else
benutzerName.addLast(benutzerName);

}

public void benutzerAbmelden(LinkedList benutzerName)
{
benutzerName.remove(benutzerName);
}
}

Hier ist ein ausschnitt aus der aufgabenstellung:

Die Klasse Netzwerk besitzt eine Methode benutzerAnmelden, der ein
Benutzername übergeben wird. Der übergebene Name wird an das Ende der
LinkedList angehängt.

könnt ihr mir helfen?

Hallo,

glaub deine Variable benutzerName hast du etwas überladen. Denn einmal verwendest du den Namen, um eine LinkedList zu erzeugen, aber dann benutzt du denselben Namen nochmal für einen Nutzer, wenn du sie hinzufügst oder abmeldest.

Du solltest schon klar hervorstellen, was von deinen Variablen eine Liste ist und was ein String. In deiner Version fügst du nämlich nicht einen String an eine Liste an, sondern eine Liste an eine Liste und willst dieselbe Liste auch wieder von selbiger entfernen. Das Paradoxon mag natürlich der Javacompiler nicht :smile:

Änder am besten die Variable benutzerName in listBenutzer um. Dann solltest du auch keine LinkedList als Parameter für an- und abmelden übergeben, sondern nur einen String.
Ich zeig dir das einmal für die Anmeldeprozedur:

private LinkedList benutzerName; 

umändern in

private LinkedList listBenutzer;

public void benutzerAnmelden(String benutzerName)
{
if(this.listBenutzer.size()\>anzahlBenutzer) 
{
System.out.println("Geht nicht");
} 
else
this.listBenutzer.addLast(benutzerName); 
}

Das Wörtchen this verwendet man, um zu zeigen, dass man damit die globale Variable ansprechen möchte und nicht eventuell die, die du in der Prozedur erzeugt oder übergeben hast.

Du musst jetzt nur noch die Abmeldeprozedur nach gleichen Muster abändern und dann sollte es gehen.

Hoffe mal das funktioniert. Kannst gerne auch den kompletten Code schicken.

Viel Erfolg :smile: