selbst erstellte Hashtabelle -- Warum Exception?

Javacus

Mitglied
Hallo :),

ich bin gerade am Verzweifeln, habe mir eine eigene Hashtabelle gebaut und möchte nun diese als Array meines selbst erstellten Datentyps "Entry" laufen lassen, also:

Entry[] hashtabelle = new Entry[n];

wobei n die vom Nutzer bestimmte Hashtabellengröße sein soll. Nur leider klappt diese Initialisierung anscheinend nicht, da ich zur Laufzeit eine NullPointerException um die Ohren geworfen krieg, sofern ich nur aufs Array zugreifen will.

z. B. dann:

hash[0].set_wert(3); --> NullPointerException

Mein Quellcode sieht folgendermaßen aus:
Ach ja evtl. logische Fehler bei der insert() oder contains() Funktion (die delete z.B. fehlt komplett) sind erstmal egal, ich habe dahingehend noch nix kontrolliert, ob das so richtig ist, ich "lerne" ja noch den Datentyp des Hashs kennen. -- Mir geht es erstmal nur um die Exception

Das ist der Entry:

Java:
public class Entry{
  private int wert;
  private char flag;

  public Entry(){
    flag = 'f';
  }
  
  public int get_wert(){
    return wert;
  }
  
  public void set_wert(int x){
    wert = x;
  }
  
  public char get_flag(){
    return flag;
  }
  
  public void set_flag(char x){
    flag = x;
  }
  
  
}

Und das ist die Hashtabelle,

Java:
class Hash{
  private int n = 0;
  private int m; //Groesse des Hash-Arrays
  private Entry[] hash;
  
  public void create_hash(int x){
    m = x;
    hash = new Entry[m];
  }
  
  public float get_loadFactor(){
    return (n/m);
  }
  
  public boolean contains(int x){
     int index = x%m;
     int i = 0;
     
     while(true){
     
     if(hash[index].get_wert() == x){
       return true;
     }
     
     if(hash[index].get_wert() != x || hash[index].get_flag() == 'g'){
       i++;
       index = index + i;
     }
     
     if(hash[index].get_flag() == 'f'){
       return false;
     }
     
     }

    }
    
    public void insert(int x){
      int index = x%m;
      int i = 0;
      
      while(true){

      if(hash[index].get_flag() == 'f' || hash[index].get_flag() == 'g'){
        hash[index].set_wert(x);
        hash[index].set_flag('b');
        break;
      }
      else{
        i++;
        index = index + i;
      }
      
      }
    }
    
    public void ausgabe(){
    
    for(int i = 0; i < m; i++){

      if(hash[i].get_flag() == 'f'){
        System.out.println("Wert: |/|" + "\t");
        System.out.println("Flag: b" + "\t");
      }
      if(hash[i].get_flag() == 'g'){
        System.out.println("Wert: |/|" + "\t");
        System.out.println("Flag: g" + "\t");
      }
      if(hash[i].get_flag() == 'b'){
        System.out.println("Wert = " + hash[i].get_wert() + "\t");
        System.out.println("Flag: b" + "\t");
      }
    }

    }
  } //Ende Klasse}

und hier ist die main(), die ich mal testweise geschrieben habe.

Java:
public class Hash_main {

  public static void main(String[] args) {
  
     Hash hash = new Hash();

     hash.create_hash(100); 
     hash.insert(5); //--> hier passiert schon die NullPointerException, warum?
     hash.insert(82);
     hash.insert(12);
     hash.ausgabe();

  }
}

Ich hoffe jemand kann mir helfen, ich sitze schon stundenlang und finde das Problem einfach nicht.
 
G

Gast2

Gast
In deiner Methode createHash schreibst du:
Java:
hash = new Entry[m];
Damit erstellst du dir nur ein Array, alle Elemente darin sind immernoch null.
Danach rufst du insert auf, und willst auf die Entries zugreifen:
Java:
hash[index].get_flag()
Dann knallts natürlich ;)
 

Javacus

Mitglied
Ohhh neiiin, dass ich das nicht gesehen habe, das ist mir ja schon "bisschen" peinlich ;-) ...aber ich hätte wohl noch drei Stunden den Quellcode angucken können, den Fehler gefunden hätte ich wohl doch nicht...

Vielen, vielen Dank an euch! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
M "Selbst erstellte" Buttons nicht sichtbar. Java Basics - Anfänger-Themen 20
M Rest mit Spring boot oder selbst anlegen Java Basics - Anfänger-Themen 14
B Hotkeys selbst definieren? Java Basics - Anfänger-Themen 1
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
I Klasse selbst fortlaufend nummerieren lassen Java Basics - Anfänger-Themen 11
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
S Tokenizer selbst implementieren Java Basics - Anfänger-Themen 1
M WindowStateListener selbst implementieren Java Basics - Anfänger-Themen 8
G MapStruct Anwendung vom selbst geschriebenen Formater Java Basics - Anfänger-Themen 4
F Kindklassen sollen Ihre Methoden selbst implementieren Java Basics - Anfänger-Themen 5
G Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen Java Basics - Anfänger-Themen 14
S Code richtig / besser machbar? (Nicht sicher, ob Code selbst falsch ist) Java Basics - Anfänger-Themen 4
B Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? Java Basics - Anfänger-Themen 5
I TreePath selbst erstellen und expandPath Java Basics - Anfänger-Themen 6
O Werte selbst eintragen Java Basics - Anfänger-Themen 9
T Selbst erstellten Dateityp mit java Programm assoziieren? Java Basics - Anfänger-Themen 4
K Selbst renderndes Object auf null setzen Java Basics - Anfänger-Themen 1
M Eclipse startet nicht mehr (eclipse.exe beendet sich selbst)? Java Basics - Anfänger-Themen 5
D Exception selbst Implementieren Java Basics - Anfänger-Themen 1
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
M Java Datei soll sich selbst löschen Java Basics - Anfänger-Themen 8
M Java Bukkit Plugin (selbst erstellt) Java Basics - Anfänger-Themen 9
S Listen Klasse selbst schreiben Java Basics - Anfänger-Themen 6
B Methoden Methode lässt sich nicht selbst aufrufen? Java Basics - Anfänger-Themen 3
H JFileChooser... dateispeicherpfad selbst aussuchen Java Basics - Anfänger-Themen 4
L Klassen Kann eine Klasse sich selbst returnen? Java Basics - Anfänger-Themen 26
T methode ruft sich selbst auf Java Basics - Anfänger-Themen 28
J importieren von selbst definierten klassen Java Basics - Anfänger-Themen 10
M JButton selbst nachprogrammieren Java Basics - Anfänger-Themen 3
K indexOf selbst rekursiv definieren Java Basics - Anfänger-Themen 4
M selbst gezipptes File lässt sich nicht öffnen Java Basics - Anfänger-Themen 2
S Deserialisieren auf sich selbst Java Basics - Anfänger-Themen 4
Developer_X JButton removt sich selbst Java Basics - Anfänger-Themen 32
G isEmpty selbst realisieren Java Basics - Anfänger-Themen 47
R Ein/Ausleseproblem von Datei mit selbst erstellten Objekten Java Basics - Anfänger-Themen 10
D Bei Event soll Instanz sich selbst löschen Java Basics - Anfänger-Themen 4
K Wieso schaltet meine CheckBox von selbst um ? Java Basics - Anfänger-Themen 31
F JOptionPane selbst programmieren Java Basics - Anfänger-Themen 8
E Eine Klasse hat eine Instanz von sich selbst. Java Basics - Anfänger-Themen 6
L vor- und zurückblättern selbst gemacht Java Basics - Anfänger-Themen 18
G Button selbst entwerfen Java Basics - Anfänger-Themen 9
G Mit "instanceof" sich selbst Fragen? Java Basics - Anfänger-Themen 4
G Array von selbst-definiertem Typ Java Basics - Anfänger-Themen 3
R Comparable Interface Funktionalität selbst programmieren? Java Basics - Anfänger-Themen 3
B Programm sich selbst neu starten lassen Java Basics - Anfänger-Themen 8
D Thread soll sich selbst beenden Java Basics - Anfänger-Themen 8
G Objektarray mit sich selbst rekombinieren Java Basics - Anfänger-Themen 5
B Objekt soll sich selbst löschen Java Basics - Anfänger-Themen 25
K Vector mit sich selbst vergleichen Java Basics - Anfänger-Themen 2
rambozola selbst definierte exception abfangen funzt nicht Java Basics - Anfänger-Themen 14
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
H Mit Schleife erstellte gleichnamige Objekte einzeln anwählen? Java Basics - Anfänger-Themen 1
Joew0815 konstruktor und damit erstellte objekte Java Basics - Anfänger-Themen 1
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
D Erstellte Jar datei zeigt keine Bilder an Java Basics - Anfänger-Themen 5
J Erstellte .jar unter 32 bit funktioniert nicht bei 64 bit Java Basics - Anfänger-Themen 4
A Das Erstellte platzieren Java Basics - Anfänger-Themen 23
I Erstellte Objekte in Array's miteinander vergleichen Java Basics - Anfänger-Themen 11
G bereits erstellte Objekte benutzen Java Basics - Anfänger-Themen 7
J Zugriff mit Visitor Pattern auf eigen erstellte verk. Liste Java Basics - Anfänger-Themen 3
D Erstellte Textfelder in Applet mit Tab - Taste anspringen Java Basics - Anfänger-Themen 3
B In Java erstellte Dateien in Excel verwenden Java Basics - Anfänger-Themen 4
D zuletzt erstellte oder gänderte Datei auswählen! Java Basics - Anfänger-Themen 10
G In Main erstellte Objekte/Variablen woanders nutzen Java Basics - Anfänger-Themen 2
X Allgemeine Hashtabelle - wie? Java Basics - Anfänger-Themen 4
P Hashtabelle-Häufigkeit von String zählen Java Basics - Anfänger-Themen 2
A Objekt in Hashtabelle Java Basics - Anfänger-Themen 10
R Sortieren einer Hashtabelle Java Basics - Anfänger-Themen 6
M Hashtabelle füllen Java Basics - Anfänger-Themen 2
H Hashtabelle werte auslesen! Hilfe Java Basics - Anfänger-Themen 4
G Hashtabelle Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben