【问题标题】:Button Event Handler updating Textfield issue按钮事件处理程序更新文本字段问题
【发布时间】: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


    【解决方案1】:

    缺少括号?

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

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

    并且方法factorial 不能正确处理负值。

    【讨论】:

    • 该方法应该在数字为 0 或更大时调用,因此我将它放在 else 语句中。当数字为负数时,它不会被调用吗?
    • 哎呀,没关系,我看到了缺少的括号,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2011-05-16
    相关资源
    最近更新 更多