我将在过去的试卷上查看一系列问题。 其中一个问题是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吗? 有人可以告诉我,我的代码似乎出了问题吗? 请原谅我仍在学习的任何愚蠢的错误。 非常感谢。
答案 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
的分支返回false
或if
时,您应该考虑在没有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,则没有返回值。