为什么这样做:
if(name.equals("email_stub")) {
if(emailStub == "")
emailStub = results.getString("text");
} else if(name.equals("fax")) {
if(fax == "")
fax = results.getString("text");
}
但是没有第一层括号,它将无法工作,而是无法在逻辑上分离if语句。即它永远不会超出第一个if语句,并且不会按预期工作。
if(name.equals("email_stub"))
if(emailStub == "")
emailStub = results.getString("text");
else if(name.equals("fax"))
if(fax == "")
fax = results.getString("text");
当我遇到这个问题时,我觉得很奇怪。
答案 0 :(得分:6)
因为:
if(name.equals("email_stub"))
if(emailStub == "")
emailStub = results.getString("text");
else if(name.equals("fax"))
if(fax == "")
fax = results.getString("text");
实际上就是这样:
if(name.equals("email_stub"))
if(emailStub == "")
emailStub = results.getString("text");
else if(name.equals("fax"))
if(fax == "")
fax = results.getString("text");
如果没有大括号,else
将引用它前面的第一个if
。
正如@Hovercraft评论的那样:
避免
if(emailStub == "")
而是if (emailStub.isEmpty())
或if ("".equals(emailStub))
,因为你永远不应该比较字符串 使用==
或!=
。另请考虑在此处使用trim()
,例如if (emailStub.trim().isEmpty())
。