【问题标题】:Comparing Strings in Java .equals()比较 Java 中的字符串 .equals()
【发布时间】:2014-09-24 02:39:37
【问题描述】:

我正在尝试过滤用户的输入,以确保其最多为 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();
            }

        }

【问题讨论】:

  • strInput != null代替!strInput.equals(null)

标签: java string compare equals joptionpane


【解决方案1】:

换行:

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

收件人:

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

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

【讨论】:

  • 谢谢,实际上我只是将其保留为 strInput.matches("\\d{1,4}"))。感谢您的帮助,我没有考虑过这个
  • @OscarF 如果 strInput 为 null,您将得到 NullPointerException。您必须在正则表达式匹配之前检查 null。
  • 我将整个 if else 语句放在 try catch 中。这处理了 NullPointerException。这样做有错吗?
  • 没有错,但是让异常通过有更高的CPU成本。最好先检查一下。
  • 所以你需要一个“else if”。检查 JOptionPane.showInputDialog 返回选项的文档。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      你可以这样做:

      strInput!=null && strInput.trim().length()>0

      【讨论】:

        【解决方案5】:

        试试这个

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

        我希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          你比较错了。

          当您将对象传递给 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();
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-02-16
            • 1970-01-01
            • 1970-01-01
            • 2011-05-03
            • 1970-01-01
            • 2014-11-11
            • 2012-06-28
            • 1970-01-01
            相关资源
            最近更新 更多