Java Verkettete Liste (wo liegt der fehler)

Hunter3

Grünschnabel
guten abend,

ich verzweifle langsam ich sitze jetzt seit 2 1/2 stunden an diesem mini programm und finde den fehler nicht
es geht darum das die zahlen die der benutzer eingibt in einem objekt gespeichert werden was wiederum eine referenz aufs nächste objekt enthält also eine einfache verkettete liste
es kommt KEINE fehlermeldung sondern das programm tut einfach nicht das was es tun soll
es gibt nur die erste und letzte zahl aus

danke schonmal im voraus

hier mal der code:
Code:
import java.io.*;
import java.util.Scanner;


public class JavaKlassenTest
{

    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        String s;
        int i;     
        int zahl = 0;
        boolean check = true;


        ZAHLEN zahl_current = null;
        ZAHLEN zahl_buffer = null;
        ZAHLEN erstesobjekt = null;
       

        while(true)
        {
            System.out.println("Bitte eine Aktion eingeben !");
        
            s = in.next();
        
            if(s.equals("neu"))
            {
                while(zahl != 999)
                {
                    System.out.println("Nummer ");
                    zahl = in.nextInt();

                    if(erstesobjekt != null)
                    {                        
                        zahl_current = new ZAHLEN(zahl);
                        zahl_buffer.next = zahl_current;                        
                        zahl_current.next = null;
                    }
                    else
                    {                       
                        erstesobjekt = new ZAHLEN(zahl);
                        zahl_buffer = erstesobjekt;
                    }
                }
                
            }

            if(s.equals("lesen"))
            {
                zahl_current = erstesobjekt;
                while(zahl_current.next != null)            
                {
                    
                    System.out.println("Zahl: " + zahl_current.stnummer);
                    zahl_buffer = zahl_current.next;
                    zahl_current = zahl_buffer;
                }
            }
        }
    }

    public static class ZAHLEN
    {
        ZAHLEN next;
        int    stnummer;
        
        public ZAHLEN(int nummer)
        {
            stnummer = nummer;
        }                    
    }
    
}
 
Es ist schon spät und ich bin hundemüde, aber mir scheint du hast da einen Denkfehler drin bei der Zuweisung des Next-Links.

erstesobjekt.next bekommt nichts zugewiesen.

Ich denke du suchst einen Weg das letzte Objekt zuzuweisen, aber das ist schon weg. An deiner Stelle würde ich mit Klassen arbeiten.
Schau dir mal folgenden Beitrag an:
http://www.tutorials.de/java-grundlagen/337901-java-verkettete-liste-elemente-tauschen.html

Ein bisschen formatiert und das ganze ergänzt, wird zu:

<code>

public class HauptKlasse{

public static void main(String args[]) {

ListenElement liste = new ListenElement("1");

for(int i=2; i<11; i++){
liste.addElement(new ListenElement(""+i));
}

//Hier startet dann die Ausgabe

while (liste.next != null) {
System.out.println(liste.daten);
liste = liste.next;
}
}

static class ListenElement{

ListenElement next=null;

String daten;
int index = 0;

ListenElement(String neueDaten){
daten=neueDaten;
index =index++;
}

// hier wird ein element am ende der Liste angehängt.
void addElement(ListenElement element) {
if(next!=null){
next.addElement(element);
} else {
next = element;
}
}
}
}

</code>

Der Index ist momentan noch für nichts zu gebrauchen, aber im Beitrag steht ja auch, dass die Klasse noch erweitert werden soll mit Positionsvertauschung.

Gruß Rob
 
Zurück