3

我正在浏览一份过去试卷上的问题清单。其中一个问题是布尔类型。

如果名字不是 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?有人可以告诉我我的代码似乎哪里出了问题吗?请原谅我仍在学习中发现的任何愚蠢错误。非常感谢。

4

5 回答 5

6

去掉分号

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

您编写它的方式是两个单独的语句。首先,如果 name 不等于 Thomas,则什么也不做。其次,返回false。

于 2013-03-12T10:59:56.553 回答
6

去掉末尾的分号if statement

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

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

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

在这种情况下,如果 name 为null你不会得到NPE

于 2013-03-12T11:00:09.390 回答
3

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

你根本不需要if

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

一般来说,没有s 和/的boolean表达式更容易阅读。每次你看到返回或从一个分支返回时,你应该考虑在没有语句的情况下重写它。if== true== falsetruefalseifif

于 2013-03-12T11:03:48.810 回答
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;
    }
}
于 2013-03-12T11:02:44.770 回答
1

最好的办法是准确返回名称是否等于 Thomas。无需执行 if 语句

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

另一个建议的解决方案:

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

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

于 2013-03-12T11:04:10.773 回答