ins*_*sin -4 java conditional if-statement
为什么这样做:
if(name.equals("email_stub")) {
if(emailStub == "")
emailStub = results.getString("text");
} else if(name.equals("fax")) {
if(fax == "")
fax = results.getString("text");
}
Run Code Online (Sandbox Code Playgroud)
但是没有第一层括号,它将无法工作,而是无法在逻辑上将if语句分开.即它永远不会超越第一个if语句,并且不会按预期工作.
if(name.equals("email_stub"))
if(emailStub == "")
emailStub = results.getString("text");
else if(name.equals("fax"))
if(fax == "")
fax = results.getString("text");
Run Code Online (Sandbox Code Playgroud)
当我遇到这个问题时,我觉得很奇怪.
因为这:
if(name.equals("email_stub"))
if(emailStub == "")
emailStub = results.getString("text");
else if(name.equals("fax"))
if(fax == "")
fax = results.getString("text");
Run Code Online (Sandbox Code Playgroud)
实际上是这样的:
if(name.equals("email_stub"))
if(emailStub == "")
emailStub = results.getString("text");
else if(name.equals("fax"))
if(fax == "")
fax = results.getString("text");
Run Code Online (Sandbox Code Playgroud)
没有大括号,else将引用if它之前的第一个.
正如@Hovercraft评论的那样:
避免
if(emailStub == ""),而是做if (emailStub.isEmpty())或if ("".equals(emailStub))因为你永远不应该将字符串与==或比较!=.也可以考虑在trim()这里使用,例如if (emailStub.trim().isEmpty()).
请参阅如何比较Java中的字符串?.