AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Problem mit Java (einfach verkettete Liste)
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Java (einfach verkettete Liste)

Ein Thema von fwsp · begonnen am 5. Dez 2007 · letzter Beitrag vom 5. Dez 2007
Antwort Antwort
fwsp
(Gast)

n/a Beiträge
 
#1

Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 18:15
hallo,

ich bin derzeit dabei mir ein wenig java anzueignen, hab allerdings ein kleines problem.
ich soll eine Struktur zur speicherung von studentendaten schreiben und dafür eine einfach verkettete liste nutzen. leider komm ich nicht allzu weit, ich bekomme java.lang.NullPointerException in der ausgewiesenen zeile, leider kann ich mit beschreibung nichts anfangen. wenn ich es richtig verstanden habe, deutet es daraufhin, dass der speicherbereich null ist.
kann mir jemand weiter helfen?
danke.

Code:
public class StudentenListe {   

   private Student Kopf;
   
   public void StudentenListe() {
      Kopf = new Student();
   }
   
    public void einfuegen(int ANr, String AName, String AVorname) {
       Student NeuerStudent;
       
       NeuerStudent = new Student();
      NeuerStudent.setMatrikel(ANr);
      NeuerStudent.setName(AName);
      NeuerStudent.setVorname(AVorname);
      
      Kopf.Next = NeuerStudent; //hier ist der fehler: java.lang.NullPointerException
    } 
}
Code:
public class Student {
   private int FMatrikel;
   private String FName;
   private String FVorname;
   public Student Next;
      
   Student() {
      this.FMatrikel = 0;
      this.Next = null;
   } 
   ...
}
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 18:49
Meine Java-Kenntnisse sind zwar eingerostet, aber ist hier:
Zitat:
Code:
   public void StudentenListe() {
      Kopf = new Student();
   }
nicht ein void zuviel? Würde mich eigentlich überraschen, wenn in Java anders als in C# oder C++ ein void vor dem Konstruktor stehen dürfte.

Edit: Verrät dir der Debugger deines Vertrauens nicht, dass zum Zeitpunkt der Exception Kopf null ist?
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#3

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 18:53
danke, jetzt scheint es funktionieren.
ich fang ja nicht nur mit java, sondern auch mit eclipse erst an und hab mich noch nicht in alles eigearbeitet.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 19:24
Hierwird heute ein Javabuch verschenkt, vielleicht hilfts dir beim Lernen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#5

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 22:03
Zitat von Nikolas:
Hierwird heute ein Javabuch verschenkt, vielleicht hilfts dir beim Lernen.
das hab ich schon gesehen und geladen^^

ich hab nun ein weiteres problem:
ich soll die Liste einmal als "richtige" klasse und einmal als datenkapsel definieren. dazu muss man ja vor alle attribute und methoden static schreiben. doch ich bekomm leider nen fehler und kann nicht einschätzen woran dsa liegt.

Code:
public class StatStudentenListe {   

   private static Student Kopf;
   
   public StatStudentenListe() {
      Kopf = new Student();
   }
   
   private static boolean IsNrInList(int ANr) {
      boolean Result = false;
      Student tmpItem = Kopf;
      
        while ((tmpItem != null) && !(Result)) {
           if (tmpItem.getMatrikel() == ANr) {
              Result = true;
           }
           tmpItem = tmpItem.getNext();
        }   
        return Result;      
   }
   
    public static void einfuegen(int ANr, String AName, String AVorname) {      
       if (!(IsNrInList(ANr))) {
          Student NeuerStudent = new Student();
          Student tmpItem = Kopf;
       
          NeuerStudent.setMatrikel(ANr);
          NeuerStudent.setName(AName);
          NeuerStudent.setVorname(AVorname);
      
          while (tmpItem.getNext() != null) {
             tmpItem = tmpItem.getNext(); // fehler: java.lang.NullPointerException
          }
      
          tmpItem.setNext(NeuerStudent);
       }
    }   
}
wenn ich nun StatStudentenListe.einfuegen(1, "Name0001", "Vorname0001"); eingebe, kommt der obige fehler. liegt es an der art, wie ich auf die statische variable Kopf zugreife?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 22:16
Wenn du Kopf nur in einem normalen Konstruktor zuweist, müsstest du natürlich diesen auch irgendwo zuerst mit new aufrufen. Entweder machst du den Konstruktor wie die anderen Methoden static, dann wird er implizit vor der ersten Verwendung der Klasse aufgerufen, oder du weist den Wert schon bei der Feld-Deklaration zu (ich gehe einfach mal davon aus, dass Java das kann ):
Code:
private static Student Kopf = new Student();
PS: Dein erstes Problem war aber wirklich böse . Man hätte da wirklich eine Fehlermeldung des Compilers erwarten können, C# macht es jedenfalls so ^^ .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#7

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 22:20
ich hab ja probiert, den konstruktor static zu machen, dass wollte die ide aber net. wenn ich es bei der initialisierung mache, klappt es. danke^^
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Problem mit Java (einfach verkettete Liste)

  Alt 5. Dez 2007, 22:28
Ist wohl wirklich der einzige funktionierende Weg von diesen beiden, als Alternative zum statischen Konstruktor gibt's eine... interessante Syntax: http://forum.java.sun.com/thread.jsp...sageID=4232190 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz