myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[Java] Anfängerhilfe

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 04.11.10, 05:34   #1
Ccursed
Anfänger
 
Registriert seit: Jun 2010
Beiträge: 45
Bedankt: 12
Ccursed ist noch neu hier! | 0 Respekt Punkte
Standard [Java] Anfängerhilfe

Hallo zusammen,
im Infountterricht sollten wir einen Stack selbst programmieren, danach einen dynamischen Stack (also erst mit Array dann mit Referenz). Nun habe ich das ganze ein wenig erweitert und habe folgendes Problem:
Ich will eine Reihe von Zahlen aus einer Textdatei auslesen, diese Zahlen werden dann von String in Integers umgewandelt und an das Applet was das ganze ausgibt übergeben. Das klappt soweit, die Daten kommen im Applet an und werden dort in einem Array gespeichert. Allerdings werden die Daten dann nicht in den Stack gepackt, obwohl ich die Methoden dazu (meines erachtens) korrekt ausführe. Habe auch schon beides versucht, die Push-Methode des Applets sowie direkt über die Push-Methode des Stacks


Code:
    public void readIt()
    {
        theReader reader = new theReader(); //Readerklasse
        tempList = reader.getList(); // Methode der Readerklasse die den Array gibt
        
        for(int i=0; i<tempList.length; i++)
        {
            n++; //Variable aus dem Applet um zu sehen wie lang der Stack nun ist
            add(tempList[i]); //Methode des Applets die den Integer Parameter an den      //Stack weitergibt
            Stack.push(tempList[i]); //Direkte Pushmethode des Stacks, nur eins von //beiden jeweils ausgeführt
        }  
    }
Die Pushmethode des Stacks

Code:
  
  public void push(int a)
    {
       ele h = new ele();
       h.value = a;
       h.next = tos;
       tos = h;
    }
Die Addmethode des Applets

Code:
public void add(int a)
    {
        n++; // s.o.
        Stack.push(a); // Ruft die Pushmethode des Stacks auf
        box2.setText(null); //Für diesen Teil irrelevant
    }
Alle anderen Methoden die die Pushmethode des Stacks / die Addmethode des Arrays nutzen funktionieren.

Danke im vorraus.
Ccursed ist offline   Mit Zitat antworten
Ungelesen 04.11.10, 08:00   #2
blackhat.B3rT
Anfänger
 
Registriert seit: Oct 2010
Beiträge: 41
Bedankt: 39
blackhat.B3rT ist noch neu hier! | 0 Respekt Punkte
Standard

Also ich habe noch nie Java benutzt aber irgendwie kommt es mir seltsam vor das du die variable n in der for schleife in der readIt Methode 2 mal erhöhst, einmal direkt in der schleife und einmal direkt danach über die add Methode. (oder kommentierst du das eine aus wenn du die add Methode verwendest?)

in tos ist dein gesamter Stack drin? sehe ich das richtig?
blackhat.B3rT ist offline   Mit Zitat antworten
Ungelesen 04.11.10, 10:35   #3
Ccursed
Anfänger
 
Registriert seit: Jun 2010
Beiträge: 45
Bedankt: 12
Ccursed ist noch neu hier! | 0 Respekt Punkte
Standard

^ Ich benutze entweder add(int) oder ich greife direkt auf die Stack.push(int) Methode zurück und erhöhe n dann manuell, also wird n immer nur um einen erhöht.
tos ist in der Klasse stack (Stack (groß geschrieben) ist meine Instanz des Stacks in dem Hauptapplet) und gibt die referenz auf das derzeitge element an. Jedes element im stack hat die variablen "ele next" (für das nächste element, und int value, für den wert des jeweiligen Elements.
Ccursed ist offline   Mit Zitat antworten
Ungelesen 04.11.10, 11:19   #4
PornoPenner
Banned
 
Registriert seit: Aug 2010
Beiträge: 209
Bedankt: 70
PornoPenner ist noch neu hier! | 0 Respekt Punkte
Standard

Das wichtigste fehlt wohl: Wie sieht die Stack-Klasse denn aus?

Ist "tos" ein primitiver Datentyp?

PS: Benutze "for(int i : tempList)"
PornoPenner ist offline   Mit Zitat antworten
Ungelesen 04.11.10, 11:51   #5
Ccursed
Anfänger
 
Registriert seit: Jun 2010
Beiträge: 45
Bedankt: 12
Ccursed ist noch neu hier! | 0 Respekt Punkte
Standard

^ tos ist vom datentyp "ele", ele ist eine klasse mit nur aus 2 variablen (keine methoden, kein konstruktor) und zwar int value(der wert den ich bei add setze) und ele next, was wiederrum ein "ele" ist. Die elemente bilden eine Kette ( ele -> ele -> ele) und man hat immer nur auf das "oberste" element zugriff, welches auf das element was nach ihm kommt zeigt. Somit kann ich durch die Methode top() in der Klasse Stack auslesen, welchen wert das oberste Element (tos) hat und mit pop() (wieder Klasse Stack) setze ich tos auf das element was in tos.next gespeichert ist. Mit push(int) füge ich der Klasse ein neues Element hinzu.

Edit:
So, nun noch die Quelltexte von Ele und stack

Code:
public class stack
{
    ele tos;
    
    public stack()
    {
        
    }
    
    public void push(int a)
    {
       ele h = new ele();
       h.value = a;
       h.next = tos;
       tos = h;
    }
    
    public String top()
    {
        if(empty()) return "Empty" ;
        else return Integer.toString(tos.value);
    }
    
    public void pop()
    {
        if(empty()) return;
        else tos = tos.next;
    }
    
    public boolean empty()
    {
        if(tos == null) return true;
        else return false;
    }
}
Code:
public class ele
{
    public int value;
    public ele next, from;
  }
Ccursed ist offline   Mit Zitat antworten
Ungelesen 04.11.10, 18:29   #6
urga
Mitglied
 
Benutzerbild von urga
 
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
urga ist noch neu hier! | 0 Respekt Punkte
Standard

btw:
Code:
 public boolean empty()
    {
        if(tos == null) return true;
        else return false;
    }
->
Code:
 public boolean empty() {
 
        return tos == null;
 }
__________________
entropie erfordert keine wartung
urga ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 Uhr.


Sitemap

().