如何检查Java中的Integer文本字段是否为空?

时间:2014-05-15 03:57:02

标签: java validation parsing user-interface is-empty

我有一个存储银行帐号的GUI。在验证期间,我需要检查用户是否输入了帐号...对于字符串字段,可以使用isEmpty()方法...但是对于整数字段,例如bank acc no,Integer.parseInt(jTextField1.getText() ).isEmpty()会给出错误。当它是一个整数时如何检查空字段?

3 个答案:

答案 0 :(得分:3)

检查为空,然后将其解析为整数,如

if(!jTextField1.getText().isEmpty()){

Integer.parseInt(jTextField1.getText());

}

答案 1 :(得分:1)

您应该尝试以下代码

if(!(jTextField1.getText().isEmpty()))
    {
        int accountNumber=Integer.parseInt(jTextField1.getText());
    }

答案 2 :(得分:1)

Integer只是原始int类型顶部的包装。因此它可以是null或存储有效的整数值。没有明显的“空”定义。

如果仅将Integer与空白的String进行比较,您将得到false的结果。总是。请参见Integer.equals(Object o)的实现:

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
        return value == ((Integer)obj).intValue();
    }
    return false;
}

首先,您可以在以下行的整数解析过程中获得一个NumberFormatException

Integer accountNumber = Integer.parseInt(jTextField1.getText())

您已经明白了,因为For input string: ""看起来像一条NumberFormatExpection消息。

在您的示例中,您应该检查"accountNumber"属性值是否为数字(假设它是字符串),然后对其进行解析,或者按原样解析并捕获NumberFormatException该{{1} }引发了错误的论点。

第一个解决方案:

Integer.parseInt()

第二个解决方案:

if(!jTextField1.getText().isEmpty() && jTextField1.getText().matches("\\d+")){ //null-check and regex check to make sure the string contains only 
     Integer accountNumber = Integer.parseInt(jTextField1.getText());                 
}

}

希望这对您有帮助。

P.S。如果您使用版本7或更高版本的Java,请考虑使用try-with-resources来管理try{ Integer accountNumber = Integer.parseInt(jTextField1.getText()); }catch (NumberFormatException e) { // handle error Connection