我试图过滤用户的输入,以确保其最多4位数,并且它不是空字符串。无论我将其留空还是输入数字,!strInput.equals(null)
仍然是真的。我是否错误地比较了字符串?
我也尝试过:!strInput.equals("")
,strInput != null
和strInput != ""
虽然我认为它应该是.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();
}
}
答案 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();
}