Java 布尔测试在应该为真时返回false?
我正在检查过去试卷上的一系列问题。 其中一个问题属于布尔型 如果名称不是Thomas,则返回false;如果名称是Thomas,则返回true 这是我的密码:Java 布尔测试在应该为真时返回false?,java,boolean,Java,Boolean,我正在检查过去试卷上的一系列问题。 其中一个问题属于布尔型 如果名称不是Thomas,则返回false;如果名称是Thomas,则返回true 这是我的密码: public class QuestionTwo { String name; public static void main(String [] args){ System.out.println(nameTest("Thomas")); } public static boolean nameTest(Stri
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?
有人能告诉我我的代码哪里出了问题吗?
请原谅我在学习中发现的任何愚蠢错误。
非常感谢。删除分号
if(!name.equals("Thomas")) return false;
按照你写的方式,它是两个独立的语句。首先,如果name不等于Thomas,那么什么也不做。然后,返回false。删除
if语句末尾的分号
if(!name.equals("Thomas"))
此外,良好的做法是通过以下方式进行等于测试
:
if(!"Thomas".equals(name))
在这种情况下,如果name为null,则不会得到NPE在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;
}
}
如果名称不是Thomas,则[方法]应返回false,如果名称是Thomas,则返回true
如果
,则根本不需要:
public static boolean nameTest(String name){
return name.equals("Thomas");
}
一般来说,boolean
表达式如果周围有s和==true
/==false,那么在没有的情况下更容易阅读。每次看到代码< <代码> >代码> false <代码> >一个分支> < <代码> >时,你应该考虑改写它,如果没有<代码> < < /Cord>语句> ,最好的办法是准确地返回名称是否等于托马斯。不需要执行if语句
public static boolean nameTest(String name){
return name.equals("Thomas");
}
另一个拟议的解决办法是:
if(!name.equals("Thomas")) return false;
不会编译,因为如果名称不是Thomas,则没有返回值。谢谢!!=]你的反馈很好@首席科学家:注意Zutty移动了并返回false编码>到与if
相同的行。这是完全没有必要的。只需删除分号即可。大多数情况下,您要么缩进返回false代码>在<代码>下,如果 >它在视觉上显然是属于它的,并且经常在代码的周围放置“代码> { <代码> >和代码> } /代码>,或者,当然,将它移到与Zutty所做的相同的行中,有些人认为在有限的情况下可以接受(例如这一个)。@T.J.Crowder-Pastie.org看起来很有趣?另一个学习的好网站?不,如果你只是删除分号,代码无法编译。需要添加返回true代码>在最后。谢谢。很好的反馈。不客气:)别忘了接受你喜欢的答案或帮助解决问题的答案。在问题中没有if声明,我想我必须把它放进去。这是我第一次看到这种类型的布尔语句。非常感谢。这是我们应该记住的!!问题是我/我们(类)总是将布尔语句与if语句相关联。这可能是我们的演讲者可能正在进一步研究的东西,以便这样做??你知道,这真的很好。谢谢。@PrimalScientist是的,这类事情是讲师将在某个时候教你的。重要的是要记住,boolean
表达式也是表达式-它们不仅用于if
s和while
s,还可以赋值、返回、相互比较等等。非常感谢您的反馈。所有这些信息都非常棒,我可以以此为基础。谢谢大家。