布尔测试应该为true时返回false?

Pri*_*ist 3 java boolean

我将在过去的试卷上查看一系列问题.其中一个问题是boolean类型.

如果名称不是Thomas,则应返回false,如果是,则返回true.

这是我的代码:

public class QuestionTwo
{   
String name;

public static void main(String [] args){

    System.out.println(nameTest("Thomas"));   
}
public static boolean nameTest(String name){
    if(!name.equals("Thomas"));
    return false; 
 }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的代码应该返回true,但它会一直返回false?有人可以告诉我,我的代码似乎出了问题吗?请原谅我仍在学习的任何愚蠢的错误.非常感谢.

Per*_*ror 6

删除结尾处的分号if statement.

 if(!name.equals("Thomas"))
Run Code Online (Sandbox Code Playgroud)

同样好的做法是这样做equals test:

 if(!"Thomas".equals(name))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果name为null,则不会获得NPE.


Zut*_*tty 5

删除分号

    if(!name.equals("Thomas")) return false; 
Run Code Online (Sandbox Code Playgroud)

你写它的方式,是两个单独的陈述.首先,如果名字不等于托马斯那么什么都不做.然后第二,返回false.

  • @PrimalScientist:请注意,Zutty将`return false;`移动到与`if`相同的行.这完全没必要**.只需删除分号就可以了.大多数情况下,你要么在`if`下缩进`return false;`行,所以它在视觉上显然是从属于它的,并经常在它周围放置`{`和`}`,如下所示:http ://pastie.org/6459258或者,当然,将它移动到与Zutty所做的相同的行,有些人认为在有限的情况下可以接受(例如这个). (2认同)