按钮事件处理程序更新Textfield问题

时间:2016-05-09 23:18:36

标签: java javafx event-handling java-8 javafx-8

我在控制台中收到一条错误,上面写着“线程中的异常”JavaFX Application Thread“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
}

1 个答案:

答案 0 :(得分:2)

缺少括号?

下一个代码调用任何输入文本:

tfResult.setText(factorial(Integer.parseInt(inputText)) + "");

方法factorial无法正确处理负值。