比较Java .equals()中的字符串

时间:2014-09-24 02:39:37

标签: java string compare equals joptionpane

我试图过滤用户的输入,以确保其最多4位数,并且它不是空字符串。无论我将其留空还是输入数字,!strInput.equals(null)仍然是真的。我是否错误地比较了字符串?

我也尝试过:!strInput.equals("")strInput != nullstrInput != ""虽然我认为它应该是.equals(...),因为我试图比较值。

        private void updateFast() {
            String strInput = JOptionPane.showInputDialog(null, "How many?");

            if (!strInput.equals(null) && strInput.matches("\\d{0,4}"))
            {
                //do something
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Error. Please Re-enter");
                updateFast();
            }

        }

6 个答案:

答案 0 :(得分:2)

更改行:

if (!strInput.equals(null) && strInput.matches("\\d{0,4}"))

要:

if (strInput != null && strInput.matches("\\d{1,4}"))

无需检查String是否为空,正则表达式会检查它。

答案 1 :(得分:1)

如果将输入值留空,则字符串将为“”不为空。您需要使用!strInput.equals("")来完成您想要实现的目标。

以防万一..你可能想要.trim()你的字符串。

答案 2 :(得分:1)

您可以使用strInput != null && !strInput.isEmpty()

答案 3 :(得分:0)

你可以这样做:

  

strInput!= null&& strInput.trim()长度()> 0

答案 4 :(得分:0)

试试这个

if (!strInput.isEmpty() ...
if (strInput != null && strInput.length() > 0 ...

我希望这会有所帮助。

答案 5 :(得分:0)

你比较错了。

将对象传递给String.equals(Object o)时,它要做的一件事就是检查传递的参数是否是String.class的一个实例。由于您传递的是null,因此它将始终返回false。

您应该检查您的字符串是否为空,然后是否为空。 String.class确实有这种方法。

所以:

if(strInput != null && !strInput.isEmpty() && strInput.matches("\\d{0,4}")) {
    // do something...
} else {
    JOptionPane.showMessageDialog(null, "Error. Please Re-enter");
    updateFast();
}