我在控制台中收到一个错误,读作“exception in thread”javafx application thread“java.lang.stackoverflowerr”。这个错误是当我使用负数时;我知道它在if/else语句中,因为在我尝试将textfields更新回空之前,没有任何东西产生错误。
这个错误似乎指向factorial方法的返回行,只有在我重新单击按钮后将textfields设置回空格时才会发生。
编辑:我忘了声明程序编译并将正确重置字段,它只是在执行此操作时将此错误抛出控制台。我怎样才能解决这个问题?
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
}
1条答案
按热度按时间e1xvtsh31#
缺少括号?
下一个代码调用任何输入文本:
和方法
factorial
不能正确处理负值。