Aufruf der Methode ergibt eine Exception

Bitte aktiviere JavaScript!
Hallo zusammen
Ich habe einen Editor geschrieben und möchte im Spiel das die Wörter aufgerufen werden.
es ergibt aber eine Exception. Wieso
Diese Methode ist die Methode mit den Wörtern

Code:
//Lesen der Methode mit den Wörtern
public static String ZufallsWort(Component dieWahl) {
    
        //Eine Variable für den Zugriff auf die Datei mit denn Wörtern
        RandomAccessFile ZufallsEntscheid;
    
        //Variablen um die Anzahl Wörterzu speichern, das Wort übergeben
        //Für die Positionene alt/neu
        int anzahlWoerter;
        String zurück = "";
        double wortZufaellig;
        int neuesWort;
    
    
        try {
        
            //Eine neue Instanzdatei mit Zugriff für read, nur um es zu lesen
            ZufallsEntscheid = new RandomAccessFile("letter.bin","r");
        
            //Die Anzahl der Wörter ermitteln
            //Die zufällige Position ermitteln und ev. Korrektur
            anzahlWoerter = (ZufallsEntscheid.readInt());
            wortZufaellig = Math.random() * anzahlWoerter+1;
            if(wortZufaellig < 1)
                wortZufaellig = 1;
        
            //Position ermitteln 
            while(ZufallsEntscheid.getFilePointer() < ZufallsEntscheid.length()) {
            
                //Wenn der ausgelesene Wert mit der Position übereinstimmt, String übergeben
                if(ZufallsEntscheid.readInt() == (int) wortZufaellig) {
                    zurück = (ZufallsEntscheid.readUTF());
                
                }
            
                //Wenn nicht, weitersuchen
                else {
                    neuesWort = ZufallsEntscheid.readUnsignedShort();
                    ZufallsEntscheid.seek(ZufallsEntscheid.getFilePointer() + neuesWort);
                }
            }
        
            //Schliessen
            ZufallsEntscheid.close();
        }
    
        //Fehler abfangen
        catch (IOException e) {
            JOptionPane.showInputDialog("Beim Laden des Wortes ist ein Problem aufgetreten.");
        }
       
        //Zurückgeben
        return nulle;
    }
Hier die Mehode wo ich die Methode ZufallsWort aufrufen möchte.

Code:
[/COLOR][/FONT][/LEFT]
 @FXML void initialize() {
  int tempIndex = 0;
  //es geht los mit 9 verbleibenden Durchläufe
  restDurchlauefe = 9;
  //die restlichen Durchläufe anzeigen
  anzVersuche.setText(Integer.toString(restDurchlauefe));
 
  //die Liste für das Kombinationsfeld füllen
  for (char temp = 'a'; temp <= 'z'; temp++) {
   zeichen[tempIndex] = Character.toString(temp);
   tempIndex++;
  }
 
  auswahl.getItems().addAll(zeichen);
  //ein Wort ermitteln
  //neuesWort();     
  TestEditor.auswahl(null);
  //new TestEditor(suchwort);
     
  //den Grafikkontext beschaffen
  gc = zeichenflaeche.getGraphicsContext2D();
  spielpunkte = new Score(meineStage);
    }
Da ich schon seit über zwei Wochen daran bin und dies nicht hin bekomme muss ich euch fragen. Ich danke euch schon im voraus.
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Hallo Robat

Die ist der ganze Fehler.

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml.FXMLLoader$MethodHandler.invoke(Unknown Source)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at javafx.event.Event.fireEvent(Unknown Source)
at javafx.scene.Node.fireEvent(Unknown Source)
at javafx.scene.control.ComboBoxBase.valueInvalidated(Unknown Source)
at javafx.scene.control.ComboBoxBase$2.invalidated(Unknown Source)
at javafx.beans.property.ObjectPropertyBase.markInvalid(Unknown Source)
at javafx.beans.property.ObjectPropertyBase.set(Unknown Source)
at javafx.scene.control.ComboBoxBase.setValue(Unknown Source)
at javafx.scene.control.ComboBox.updateValue(Unknown Source)
at javafx.scene.control.ComboBox.access$300(Unknown Source)
at javafx.scene.control.ComboBox$6.changed(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ReadOnlyObjectWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ObjectPropertyBase.markInvalid(Unknown Source)
at javafx.beans.property.ObjectPropertyBase.set(Unknown Source)
at javafx.scene.control.SelectionModel.setSelectedItem(Unknown Source)
at javafx.scene.control.ComboBox$ComboBoxSelectionModel$1.invalidated(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ReadOnlyIntegerWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ReadOnlyIntegerWrapper.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.IntegerPropertyBase.markInvalid(Unknown Source)
at javafx.beans.property.IntegerPropertyBase.set(Unknown Source)
at javafx.scene.control.SelectionModel.setSelectedIndex(Unknown Source)
at javafx.scene.control.SingleSelectionModel.updateSelectedIndex(Unknown Source)
at javafx.scene.control.SingleSelectionModel.select(Unknown Source)
at com.sun.javafx.scene.control.skin.ComboBoxListViewSkin$9.invalidated(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper$Generic.fireValueChangedEvent(Unknown Source)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ReadOnlyIntegerWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.ReadOnlyIntegerWrapper.fireValueChangedEvent(Unknown Source)
at javafx.beans.property.IntegerPropertyBase.markInvalid(Unknown Source)
at javafx.beans.property.IntegerPropertyBase.set(Unknown Source)
at javafx.scene.control.SelectionModel.setSelectedIndex(Unknown Source)
at javafx.scene.control.MultipleSelectionModelBase.select(Unknown Source)
at javafx.scene.control.MultipleSelectionModelBase.clearAndSelect(Unknown Source)
at com.sun.javafx.scene.control.behavior.ListCellBehavior.simpleSelect(Unknown Source)
at com.sun.javafx.scene.control.behavior.ListCellBehavior.doSelect(Unknown Source)
at com.sun.javafx.scene.control.behavior.ListCellBehavior.mousePressed(Unknown Source)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Unknown Source)
at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at javafx.event.Event.fireEvent(Unknown Source)
at javafx.scene.Scene$MouseHandler.process(Unknown Source)
at javafx.scene.Scene$MouseHandler.access$1800(Unknown Source)
at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source)
at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
at com.sun.glass.ui.View.notifyMouse(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$300(Unknown Source)
at com.sun.glass.ui.win.WinApplication$4$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
... 88 more
Caused by: java.lang.NullPointerException
at hangman.FXMLController.pruefen(FXMLController.java:125)
at hangman.FXMLController.auswahlNeu(FXMLController.java:59)
... 97 more

Kannst du etwas damit anfangen?
 
hallo nochmals

Code:
private void pruefen(Object auswahlZeichen) {
        char zeichen;
        int treffer = 0;
        //das ausgewählte Zeichen aus dem Kombinationsfeld wieder umbauen
        zeichen = auswahlZeichen.toString().charAt(0);
        //gibt es das Zeichen auch im Suchwort?
        //dabei vergleichen wir nur die Kleinbuchstaben
        //Zeile125
        treffer = suchwort.toLowerCase().indexOf(zeichen);
        //wenn wir nichts gefunden haben
        if (treffer < 0) {
            //1 von den verbleibenden Durchläufen abziehen
            restDurchlauefe--;
            //die restlichen Durchläufe anzeigen
            anzVersuche.setText(Integer.toString(restDurchlauefe));
            //die Fehler für die Anzeige erhöhen und den Galgen zeichnen
            erhoeheFehler();
            //einen Punkt abziehen
            punktAusgabe.setText(Integer.toString(spielpunkte.veraenderePunkte(-1)));
        }
        else {
            //nach weiteren Vorkommen suchen
            while (treffer >= 0) {
                //das Zeichen aus der entsprechenden Position im Suchwort anzeigen
                anzeige.setCharAt(treffer, suchwort.charAt(treffer));
                //treffer erhöhen und dann weitersuchen
                treffer++;
                treffer = suchwort.toLowerCase().indexOf(zeichen,treffer);
                //Punkte erhöhen
                punktAusgabe.setText(Integer.toString(spielpunkte.veraenderePunkte(5)));
            }
            //das geänderte Wort anzeigen
            ausgabeText.setText(anzeige.toString());
        }
    }
Falls dies noch wichtig ist. Suchwort und zeichen sind Strings​
 
Wenn das Zeile 125 ist
treffer = suchwort.toLowerCase().indexOf(zeichen);
dann scheint suchwort nicht initialisiert zu sein. Stell bitte sicher, dass suchwort in dieser Zeile einen Wert besitzt und nicht null ist.

BTW: Poste den Code am Besten als Java-Code, dann bekommt er Syntax-Highlighting :) [code=Java]Dein Code[/code]
 
Hallo
Ach so ich hab einfach immer Code benutzt :)
Mir ist aufgefallen, das es die Anzahl der Buchstaben im Spiel nicht anzeigt. Der Editor läuft aber einwandfrei.

Ich habe Suchwort einen Wert gegeben "" aber jetzt zeigt es mir in einer anderen Methode der Fehler.:(
Java:
private void gewinnerOderNicht() {
  suchwort="";
  //ende steuert, ob das Spiel zu Ende ist
  //nur dann wird die Liste geprüft und die Anwendung
  //geschlossen
  boolean ende = false;
  //die Linienbreite auf 1 setzen
  gc.setLineWidth(1);
  //ist das Spiel zu Ende?
  if (restDurchlauefe == 0) {
   gc.strokeText("Das gesuchte Wort war: " + suchwort, 20, 100);
   ende = true;
  }
  //ist das Wort erraten worden?
//HIER IST WIEDER DIE EXCEPTION 
//Caused by: java.lang.NullPointerException
// at hangman.FXMLController.gewinnerOderNicht(FXMLController.java:169)
  if (anzeige.toString().equals(suchwort)) {
   //pro verbleibendem Durchlauf gibt es noch zehn Punkte extra
   spielpunkte.veraenderePunkte(restDurchlauefe * 10);
   gc.strokeText("Hurra! Sie haben gewonnen!", 20, 100);
   ende = true;
  }
  if (ende == true) {
   //hat es für einen neuen Eintrag in der Bestenliste gereicht?
   if (spielpunkte.neuerEintrag() == true)
    spielpunkte.listeZeigen();

   Platform.exit();
  }
 }
 
Wenn die NPE tatsächlich in der angegebenen Zeile auftritt, dann ist entweder anzeige == null oder anzeige.toString() == null.
 
Hallo Robat

<code>Unten stehender code beginnt bei 169
//ist das Wort erraten worden?
if (anzeige.toString().equals(suchwort)) {
//pro verbleibendem Durchlauf gibt es noch zehn Punkte extra
spielpunkte.veraenderePunkte(restDurchlauefe * 10);
gc.strokeText("Hurra! Sie haben gewonnen!", 20, 100);
ende = true;<code/>

und ist aus der Methode gewinnen oder nicht
 
Dann ist entweder anzeige oder anzeige.toString() oder suchtwort null. Letzteres hattest du ja bereits initialisiert also hast du noch 2 mögliche Fehlerquellen
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben