【发布时间】:2016-05-09 23:18:36
【问题描述】:
我在控制台中收到一条错误消息,显示为“线程中的异常”JavaFX 应用程序线程“java.lang.StackOverflowError”。这个错误是当我使用负数时;我知道它在这个 if/else 语句中,因为在我尝试将文本字段更新回空之前没有任何错误产生。
错误似乎指向我的阶乘方法的返回行,仅当我在重新单击按钮后将文本字段设置回空格时才会发生这种情况。
编辑:我忘了说明程序编译并将正确重置字段,它只是在这样做时将此错误抛出到控制台中。我该如何解决这个问题?
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
}
【问题讨论】:
标签: java javafx event-handling java-8 javafx-8