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

时间:2013-03-12 10:59:18

标签: 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; 
 }
}

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

5 个答案:

答案 0 :(得分:6)

删除if statement末尾的分号

 if(!name.equals("Thomas"))

同样好的做法是以这种方式equals test

 if(!"Thomas".equals(name))

在这种情况下,如果名称 null ,您将无法获得 NPE

答案 1 :(得分:5)

删除分号

    if(!name.equals("Thomas")) return false; 

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

答案 2 :(得分:3)

  

[方法]如果名称不是Thomas,则返回false,如果是,则返回true。

您根本不需要if

 public static boolean nameTest(String name){
     return name.equals("Thomas");
 }

通常,boolean表达式在没有if== true / == false的情况下更易于阅读。每当您看到从true的分支返回falseif时,您应该考虑在没有if语句的情况下重写它。

答案 3 :(得分:1)

在if和return语句之后加上分号会使它们成为单独的语句。 代码应该是:

public class QuestionTwo {   
    String name;

    public static void main(String [] args){
        System.out.println(nameTest("Thomas"));   
    }

    public static boolean nameTest(String name){
        if(!"Thomas".eqauals(name)) {
            return false;
        }
        return true;
    }
}

答案 4 :(得分:1)

最好的办法是确切地返回该名称是否等于托马斯。没有必要做if语句

public static boolean nameTest(String name){
  return name.equals("Thomas"); 
}

另一个提议的解决方案:

if(!name.equals("Thomas")) return false;

将无法编译,因为如果名称不是Thomas,则没有返回值。