Comparable

Snake87

Mitglied
Hallo ich soll von meinen Prof. aus, ein Programm schreiben was die Worthäufigkeit berechnen.
Also wie oft kommt ein Wort vor in einen Text.

Erstmal ich bekomme folgende Fehlermeldung:

Code:
java.lang.NullPointerException
	at java.lang.String.compareTo(Unknown Source)
	at AllWords.register(AllWords.java:20)
	at wc.main(wc.java:19)

Java:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

// wc.java
public class wc {
public static void main(String[] s) {
  AllWords words = new AllWords(10000);// reicht aus für den gegebenen Text lächelnd

  
  File file = new File("faust.txt");
  Scanner scanner;
try {
 scanner = new Scanner(file);

 while(scanner.hasNext() == true ) {
      //System.out.println(scanner.next() );
      String t = scanner.next();
      words.register(t);
    }

} catch (FileNotFoundException e) {
 System.out.println("Datei nicht gefunden");// TODO Auto-generated catch block
 e.printStackTrace();
}

}
}


Java:
public class Word implements Comparable<Word> {

private String content; // das Wort als Zeichenkette
private int n; // die Anzahl des Auftretens dieses Wortes im Text


public String getContent(){
  return content;
}

public Word(String s){
s = this. content;         // s als content übernehmen,
n = 1;                    // zähler auf 1 setzen (erstes Auftreten)
}

public int frequency() { return n; }

public void inc(){
  this.n++;                // erhöhe Zähler für dieses Wort um 1
}

public int compareTo(Word w){
 
//String implementiert Comparable, daher kann man auf diese Methode drauf zugreifen und verwenden  
  return this.getContent().compareTo(w.getContent());

}

public String toString(){
 return this.getContent()+" : "+this.n;
// liefert für dieses Wort die Zeichenkette: "Häufigkeit : Wort"
}

}



Java:
public class AllWords {

private Word words []; // das Feld, in dem alle Wörter erfasst werden sollen
private int all = 0; // Index der nächsten freien Position in words[]
int max;

public AllWords (int n)
{
max = n;// Platz für maximal max Wörter im Feld
words = new Word[n]; //initalieren des arrays
}

public void register(String s)
{
    //Vergleiche ob Worrt bereits vorhanden ist
    for (int i = 0; i < this.all; i++) {
      //wenn dies der Fall ist Zähler um 1 erhöhen
      if(s.compareTo(words[i].getContent() ) == 0) {
        words[i].inc();
        //springe aus der Methode heraus und führe nachfolgenden Code nicht mehr aus
        return;
      }
  }
  
    if(all < max) {
      words[all] = new Word(s);
      all++;
     }
    else{
      System.out.println("Kein Platz mehr vorhanden");
      System.exit(-1);
    }
  }
}
 

Der Müde Joe

Top Contributor
Alle deine Wörter im Array words sind null. Wenn du darauf getContent() aufrufst --> NPE

EDIT:
dies ist falsch.

Der content selber ist null im word. dann knallts. siehe post 4
 
Zuletzt bearbeitet:

DocRandom

Top Contributor
Hallo Snake87!

Du greifst in der Methode Register auf ein leeres Feld zu, ergo die NullPointerException.
Du solltest vorher abfragen ob in dem Feld schon was drinnen ist.
z.B.:
Java:
If(words[i] != null) {
    if(s.compareTo(words[i].getContent() ) == 0) {
lg
 

Der Müde Joe

Top Contributor
ach ja..
verursacht durch:
Java:
public Word(String s){
s = this. content;         //<---------------------- content immer null
n = 1;
}
 

Snake87

Mitglied
Danke euch, denn Fehler hatte nie alleine gefunden. Obwohl er doch eigentlich recht trival ist.:oops:

Habe einfach mal die Seiten vertauscht, also statt:

Code:
s = this. content;

Habe ich nun geschrieben:

Code:
this.content = s

Ja wenn man den eigentlichen Inhalt immer überschreibt brauch man sich nicht wundern.

Danke nochmal.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
J Interface Comparable<T> Java Basics - Anfänger-Themen 10
L Interface & Comparable Java Basics - Anfänger-Themen 15
I Generics und Comparable Java Basics - Anfänger-Themen 14
O Comparable Generic Java Basics - Anfänger-Themen 24
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
Kornblume Comparable Interface für Objektvergleiche nutzen Java Basics - Anfänger-Themen 15
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
N Comparable bzw Comparator Java Basics - Anfänger-Themen 5
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
K Comparable - Objekte aus Array vergleichen und größtes auswählen Java Basics - Anfänger-Themen 1
Shizmo Frage zu Comparable Java Basics - Anfänger-Themen 4
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
S Generics und Comparable Interface Java Basics - Anfänger-Themen 5
N Compiler-Fehler Comparable / compareTo implementierung Java Basics - Anfänger-Themen 2
F Comparable mit String Java Basics - Anfänger-Themen 5
M Comparable und Comparator nicht ganz klar Java Basics - Anfänger-Themen 1
F Objekte sortieren mit Comparable Java Basics - Anfänger-Themen 9
R Mehrere Interfaces(Comparable, ...) Java Basics - Anfänger-Themen 2
B Comparable & Comparator Java Basics - Anfänger-Themen 9
C Comparable Interface Java Basics - Anfänger-Themen 8
T Interface Interface Comparable Problem... Java Basics - Anfänger-Themen 2
H Interface Comparable Verständnisfrage Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
J Probleme mit Comparable, compareTo() Java Basics - Anfänger-Themen 2
A Comparable interface Java Basics - Anfänger-Themen 26
I Interface Comparable für Server-Item-Interface Java Basics - Anfänger-Themen 12
P Comparable und Generics Java Basics - Anfänger-Themen 6
S comparable und equals Java Basics - Anfänger-Themen 7
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
M Frage zum Interface Comparable Java Basics - Anfänger-Themen 3
H Comparable und Comparator Java Basics - Anfänger-Themen 22
S instanceof Comparable...geht nicht? Java Basics - Anfänger-Themen 20
M comparable funktion & reverse funktion Java Basics - Anfänger-Themen 8
H Mehrere Comparable Java Basics - Anfänger-Themen 4
S Comparator / Comparable ? Java Basics - Anfänger-Themen 3
D Comparable - Bucketsort / Radixsort? Java Basics - Anfänger-Themen 2
B Mehrere Werte mit Comparable sortieren Java Basics - Anfänger-Themen 14
S String umwandeln in Comparable Java Basics - Anfänger-Themen 6
R Comparable Interface Funktionalität selbst programmieren? Java Basics - Anfänger-Themen 3
A Interface Comparable Java Basics - Anfänger-Themen 2
J Comparable Java Basics - Anfänger-Themen 9
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
frau-u Wie vergleicht Comparable Java Basics - Anfänger-Themen 2
M Comparable - Bedingung erzwingen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben