Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布尔测试在应该为真时返回false?_Java_Boolean - Fatal编程技术网

Java 布尔测试在应该为真时返回false?

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

我正在检查过去试卷上的一系列问题。 其中一个问题属于布尔型

如果名称不是Thomas,则返回false;如果名称是Thomas,则返回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? 有人能告诉我我的代码哪里出了问题吗? 请原谅我在学习中发现的任何愚蠢错误。 非常感谢。

删除分号

    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,还可以赋值、返回、相互比较等等。非常感谢您的反馈。所有这些信息都非常棒,我可以以此为基础。谢谢大家。