Queue programmieren via BlueJ

Layer7

Mitglied
Guten Abend,

momentan bin ich dabei, eine Queue zu programmieren, welche aus einzelnen Knoten besteht, die wiederum jeweils mit Inhalt gefüllt sind - soweit so gut, doch erhalte ich noch die eine oder andere Fehlermeldung, auch bin ich mir nicht sicher, ob die Funktion, welche die Elemente der Schlange zählen soll, funktioniert.

Klassen:

Person - beinhaltet lediglich einige für die eigentliche Fragestellung irrelevante Variablen
Node - Element der Schlange
Queue - Hauptklasse, welche eigentliche Operationen ausführt.

Hier der Quelltext:

Node (hier treten meines Erachtens nach noch keine Probleme auf)
Java:
public class Node
{
    private Person inhalt;
    private Node next;
   

    public Node(person p)
    {
        inhalt = p;
    }

    public void setNext(Node n) {
        next = n;
    }
    
    public Node giveNext() {
        return next;
    }
    
    public Person returnInhalt(Node n) {
        return inhalt;
    }

}


Queue:

Java:
public class Queue
{

    public Node start;
    public Node end;
    public int counter = 0;
    private int anfangsCounter = 0;

    public Schlange()
    {

    }

    public void enqueue(Node n) { 
        if(start==null&&end==null) {
            start = new Node;
end = new Node;
        }

        else {
            start = new Node;
        }
    }
//Anmerkung zu enqueue: Hier soll ein neuer Knoten an den Anfang gesetzt werden, jedoch                                                      //wird die Fehlermeldung ") or ] expected" ausgegeben.

    public void dequeue(Node n) {
        if(start==null&&end==null) {

        }

        else {
            if(start!=end) {
                start=n.gibNachfolger();
            }
if(start==end) {
start == null;
end == null;
}
        }
    }
//Anmerkung zu dequeue: das erste Element der Schlange soll entfernt werden, hier wird keine Fehlermeldung ausgegeben.


    public boolean einElement() {
        if(start==end&&start!=null) {
            return true;
        }

        else {
            return false;
        }
    }

    public boolean leer() {
        if(start==null&&end==null) {
            return true;
        }

        else {
            return false;
        }
    }

//Anmerkung zu leer und einElement: es wird überprüft, ob ein oder kein Element in der Schlange //vorhanden ist.

    public void count(Node n) {
        if(anfangsCounter = 0) {
            start = end;
            start=n.giveNext();
            counter ++;
            anfangsCounter ++;
        }

        if(anfangsCounter!=0) {
            if(start!=k) {
                start = end;
               start=n.giveNext();
                counter ++;
                Queue.count();
            }

            else {
                return counter;
            }
        }

    }

}
//Anmerkung zu count: Die Anzahl der Elemente der Schlange soll geprüft werden.
//Meine Idee besteht darin, dass der Anfang der Queue kontinuierlich ans Ende gesetzt wird und //daraufhin der Nachfolger des Anfangs der neue Anfang wird, pro Aktion wird ein Counter erhöht, //welcher die Anzahl der Elemente angibt.
//Da die Funktion darauf beruht, dass der jeweilige Anfang nicht n ist, habe ich den anfangsCounter //eingeführt, der dafür sorgt, dass der Vorgang beim ersten mal auch dann ausgeführt wird, wenn //Anfang und Ende übereinstimmen.
//Schlange.count() soll die Funktion solange aufrufen, bis der Anfang wieder mit n übereinstimmt, //jedoch wird hier die Fehlermeldung "Method in class Queue cannot be applied to given types; //requiered: node; found: no arguments; reasons: actual and formal arguments lists differ in length" //ausgegeben."



Über jegliche Hilfe würde ich mich sehr freuen :)
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
Konstruktor und Klassennamen sind unterschiedlich.

Java:
    public Schlange()
    {
 
    }

Neue Objekte werden durch einen Konstruktoraufruf erzeigt. Deshalb sind die Klammern notwendig.

Java:
start = new Node();

Es gibt keine count()-Methode ohne Parameter. Zudem müsste sie static sein, wenn du sie über die Klasse aufrufst.
Java:
                Queue.count();

Warum machst du nicht, sowas wie: (Nur ein Beispiel, kein funktionsfähiger Code)

Java:
cnt = 0;

while(Node.hatNachfolger?) {
   cnt++;
}

return cnt;

Wenn void als Rückgabewert angegeben ist, kannst du keinen Integer zurückgeben.

Java:
                return counter;
 
Zuletzt bearbeitet:

Layer7

Mitglied
Erstmal danke für die schnellen Antworten.

Ich habe bereits einige Probleme beseitigt, doch momentan komme ich bei der count-Methode nicht weiter:


Queue
Java:
public class Schlange
{

    public Node start;
    public Node end;
    public int counter = 0;
           private int zahl = 0;

    public Schlange()
    {

    }

  

    public int count(Node n) {
        if(zahl==0) {
            start=n;
            zahl++;
        }
        if(zahl!=0) {
            while(start.hatNachfolger()==true) {
                counter++;
                start=n.gibNachfolger();
              
            }
           
        }
        return counter;
    }
}

Node:
Java:
public class Node
{
    private person inhalt;
    public Node naechster;

   

    public Knoten(person p)
    {
        inhalt = p;
    }

    public void setzeNachfolger(node n) {
        naechster = n;
    }

    public Knoten gibNachfolger() {
        return naechster;
    }

    public boolean hatNachfolger() {
        if(naechster!=null) {
            return true;
        }

        else {
            return false;
        }
    }

    public person gibInhalt(node n) {
        return inhalt;
    }

    
}

Alles lässt sich kompilieren, führe ich jedoch die count-Funktion aus, rechnet der PC scheinbar in einer Endlosschleife, kein Ergebnis wird angezeigt.
 
Zuletzt bearbeitet:

Ruzmanz

Top Contributor
- Um die Größe der Schlange zu ermitteln brauchst du keine Parameter.
- Die Endlosschleife tritt auf, weil du immer dein Startelement auf "n.gibNachfolger()" setzt. Der gibt die endlos den Nachfolger von deinem n-Element zurück.

Java:
    public int count() {
        if(zahl==0) {
            start=n; // Fehler, da n fehlt.
            zahl++;
        }
        if(zahl!=0) {
            while(start.hatNachfolger()==true) {
                counter++;
                start=n.gibNachfolger(); // Fehler, da n fehlt.
             
            }
           
        }
        return counter;
    }


- Die Größe deiner Schlange ermittelst du, indem du alle Elemente ab deinen Startpunkt zählst. Der Startpunkt ist bereits bekannt.
- Dort gehst du immer weiter bis zum nächsten Knoten

Java:
    public int count() {
        Node node;

        if(zahl==0) {
            node = start; // Von Anfang an beginnen.
            zahl++;
        }
        if(zahl!=0) {
            while(node.hatNachfolger()) { // Gibt bereits true/false zurück, deshalb muss man das nicht mit == true gegenprüfen.
                counter++;
                node = node.gibNachfolger(); // Setzt die Node auf das nächste Element.
            }
           
        }
        return counter;
    }

- Die Instanzvariable zahl wird nicht benötigt. Das können simple Abfragen erledigen.

Java:
    public int count() {
        Node node;

        if(start != null) {
            node = start;
            counter++;

            while(node.hatNachfolger()) {
                counter++;
                node = node.gibNachfolger();
            }
        }
        return counter;
    }

- Da du eine Count-Methode hast und nicht beim Hinzufügen / Löschen den Wert von counter veränderst, brauchst du sie nicht als Instanzvariable.

Java:
    public int count() {
        Node node;
        int counter = 0;

        if(start != null) { // Zähle nur, wenn es ein Startelement gibt, ansonsten ist der counter 0.
            node = start;
            counter++;

            while(node.hatNachfolger()) {
                counter++;
                node = node.gibNachfolger();
            }
        }
        return counter;
    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Generische Queue programmieren Java Basics - Anfänger-Themen 5
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Zahlenfolge von Queue in Stack Java Basics - Anfänger-Themen 29
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
P Priority Queue Performance Java Basics - Anfänger-Themen 3
Chabub Hilfe bei Stacks und Queue Java Basics - Anfänger-Themen 2
G Stack und Queue Arbeitsblatt Java Basics - Anfänger-Themen 3
F Queue zyklisch Java Basics - Anfänger-Themen 8
D Queue vs. Stack Java Basics - Anfänger-Themen 6
L Queue mithilfe von 2 Stacks erstellen Java Basics - Anfänger-Themen 1
B Automatisierung von Jobs / @EJB Scheduler / Verhinderung, dass Queue überläuft Java Basics - Anfänger-Themen 2
A Priority Queue / Comparator Java Basics - Anfänger-Themen 6
J Queue Warteschlange Java Basics - Anfänger-Themen 3
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
Y Unendlicher Ringbuffer (Queue) Java Basics - Anfänger-Themen 49
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
E Stack vs Queue - Gemeinsamkeiten / Unterschiede Java Basics - Anfänger-Themen 7
H Collections StackOverflowError in einer Queue Java Basics - Anfänger-Themen 3
R Klassen Die lineare Datenstruktur Queue Java Basics - Anfänger-Themen 3
JokerBlacky Klassen Klasse Queue Klasse mit Attributen anhängen und auslesen können Java Basics - Anfänger-Themen 4
K Queue enq Fehler Java Basics - Anfänger-Themen 2
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
A Queue (Array) leeren Java Basics - Anfänger-Themen 1
F HTTP Get Queue Java Basics - Anfänger-Themen 7
J Queue zyklisch auslesen Java Basics - Anfänger-Themen 4
T Priority-Queue Java Basics - Anfänger-Themen 9
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
P Array queue problem Java Basics - Anfänger-Themen 1
B Multithreading und eigene Queue entwickeln Java Basics - Anfänger-Themen 3
I Erste Schritte Queue Java Basics - Anfänger-Themen 14
G Queue auf einer Seite löschen, andre Seite schreiben Java Basics - Anfänger-Themen 3
G Queue mit int oder float Java Basics - Anfänger-Themen 3
Q queue.remove Element trotzdem noch vorhanden. Java Basics - Anfänger-Themen 10
P Priority Queue Java Basics - Anfänger-Themen 6
M Compiler-Fehler Queue als ArrayList mit Exceptions Java Basics - Anfänger-Themen 3
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
B Queue mit Daten aus einem Stack füllen Java Basics - Anfänger-Themen 21
P Collections Queue mittels ArrayList Java Basics - Anfänger-Themen 2
T Collections Queue<? extends Number> add() offer() Java Basics - Anfänger-Themen 13
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
R NullPointerException in Queue-Implementierung Java Basics - Anfänger-Themen 11
B Queue problem! Java Basics - Anfänger-Themen 2
R Queue abhören und Message in Browser ausgeben Java Basics - Anfänger-Themen 3
T Erstellung von Queue mit verkketten listen Java Basics - Anfänger-Themen 3
kulturfenster Stack / Queue Implementationen Java Basics - Anfänger-Themen 11
K Priority Queue - wo ist denn jetzt der Vorteil? Java Basics - Anfänger-Themen 7
W Iterator in Queue Java Basics - Anfänger-Themen 5
Q An erste Stelle in eine Queue eintragen Java Basics - Anfänger-Themen 4
H Stack und Queue Java Basics - Anfänger-Themen 6
M Threadsichere Queue in Java 1.5? Java Basics - Anfänger-Themen 2
G Int-Queue in String-Queue umwandeln Java Basics - Anfänger-Themen 5
A Queue erweitern Java Basics - Anfänger-Themen 13
P Queue, Stacks, Listen Java Basics - Anfänger-Themen 7
S Queue als Array implementiert get()? Java Basics - Anfänger-Themen 4
S Queue als verkettete Liste Java Basics - Anfänger-Themen 9
S Queue Java Basics - Anfänger-Themen 30
K Prüfen, ob Queue leer ist Java Basics - Anfänger-Themen 5
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben