Ich erhalte einen Fehler in der Konsole, die "Ausnahme im Thread" JavaFX Application Thread "java.lang.StackOverflowError" liest. Dieser Fehler tritt auf, wenn ich eine negative Zahl verwende; Ich weiß, dass es in dieser if/else-Anweisung ist, da nichts einen Fehler erzeugte, bis ich versuchte, die Textfelder wieder auf leer zu bringen.Button Event Handler Aktualisierung Textfeld Problem
Der Fehler scheint auf meine Rückführungslinien der faktoriellen Methode zu zeigen, dies geschieht nur, wenn ich die Textfelder nach dem erneuten Anklicken der Schaltfläche auf Leerzeichen zurücksetze.
EDIT: Ich habe vergessen zu sagen, dass das Programm kompiliert und die Felder korrekt zurückgesetzt wird, es wirft nur diesen Fehler in die Konsole währenddessen. Wie kann ich das beheben?
butCalcFact.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
String inputText = tfInput.getText();
if (Integer.parseInt(inputText) < 0) {
tfError.setText("Error: Invalid number entered.");
tfResult.setText(" ");
System.out.println("Error: Invalid number entered.");
} else
tfError.setText(" ");
tfResult.setText(factorial(Integer.parseInt(inputText)) + "");
}
});
public static long factorial(int n) {
if (n == 0) // Base case
return 1;
else
return n * factorial(n - 1); // Recursive call
}
Die Methode soll aufgerufen werden, wenn die Zahl 0 oder größer ist, also warum ich es in die else-Anweisung einfügen. Wenn die Nummer negativ ist, wird sie nicht aufgerufen? – Jake
Whoops egal Ich habe die fehlende Klammer gesehen, danke! – Jake