【问题标题】:For input string: "" when textfields are filled out对于输入字符串:填写文本字段时的“”
【发布时间】:2013-05-10 07:28:57
【问题描述】:

我正在用 Java 编写一个程序,其中有一些文本字段和一个按钮。

我得到一个java.lang.NumberFormatException: For input string: "",即使我在运行程序时填写了所有的文本字段。

我的代码如下所示:

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        method();
    }
}
            );




public void method() { 
    try { 
        String string1 = textfield1.getText();
        String string2 = textfield2.getText();
        String string3 = textfield3.getText();
        if ( string1.length() == 0 || string2.length() == 0 || string3.length() == 0) { 
            System.out.println("fill in the required text fields");
            return;
        } 
        int number = Integer.parseInt(textfield3.getText());
        //do something
    }
    catch ( NumberFormatException e ) { 
        System.out.println("Wrong format");
    }
}

编辑:

See more code here

【问题讨论】:

  • 您将textfield3.getText(); 分配给string3。还不如用它!另外,调试您的代码。它会告诉你哪里出错了。在查看您提供的代码后,我看不出有什么问题。现在是时候纠正一些愚蠢的错误了。您确定 textfield3 是正确的字段吗?
  • 我的猜测是你的代码看起来像这样,但不完全一样。该错误可能在“不完全”部分。发布重现问题的 SSCCE。
  • 尝试使用 String#trim().length()。添加一些 System.out 来测试文本字段的值并尝试调试代码
  • 我认为错误不在方法中,因为您捕获了异常,您可以发布更多代码还是这是您在代码中将字符串转换为数字的唯一一次?
  • @JBNizet 我现在添加了一个指向我的代码的链接。

标签: java actionlistener numberformatexception


【解决方案1】:

我已经对您的程序进行了一些测试,但您的文本字段有问题,因为您创建了面板并切换了哪个面板处于活动状态。

在构造函数中调用创建 JTextField 的 something() 方法。单击按钮时,您再次调用 something() 并生成一个新的 JTextField,您也将其添加到面板中。

因此,您在 GUI 上的两个 JTextField 的位置完全相同,但只引用了其中一个(最后一个创建的)。

当您单击将调用 method() 的按钮时。隐藏的 TextField 被要求输入他的文本(这就是它在我的电脑上的工作方式),这总是空的,因为我只能写到我看到的那个。

一个简单的解决方法是更改​​方法 actionPerformed:

@Override
public void actionPerformed( ActionEvent e ) {
    if ( e.getSource() == button1 ) {
        present = something;
        button1.setVisible(false);
        //something();
        visiblePanel();
        previous = something;
    }

}

所以我避免创建 JTextField,但 visiblePanel() 确保显示 TextField 和第二个按钮。

在此更改之后,我可以输入“sadda”,按下按钮并查看输出“Numberformatexception”。当我输入一个数字时,我什么也看不到,所以格式有效。

【讨论】:

    猜你喜欢
    • 2017-04-22
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2012-12-05
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多