Java 为什么这会给出意外的返回值?

Java 为什么这会给出意外的返回值?,java,if-statement,substring,return-value,Java,If Statement,Substring,Return Value,解决codingbat问题时使用相同的代码,但在我的IDE中不起作用 public class Bark { public static void main(String[] args) { String lo = "hi there"; String shank = lo.substring(0 , 2); if (shank.equals("hi")) return true; else return false; }} 我的猜测是,您的期望必须与某种人工制

解决codingbat问题时使用相同的代码,但在我的IDE中不起作用

public class Bark {
public static void main(String[] args) {
    String lo = "hi there";
    String shank = lo.substring(0 , 2);
    if (shank.equals("hi")) return true;
    else return false;
}}

我的猜测是,您的期望必须与某种人工制品相关。当然,对
的检查应该显示它等于
hi
。您正在从方法返回布尔值,该方法为
void
,并且没有返回类型。考虑下面的版本,如预期的那样工作:

public static void main(String[] args) {
    String lo = "hi there";
    String shank = lo.substring(0 , 2);
    if ("hi".equals(shank)) {
        System.out.println("EQUAL");
    }
    else {
        System.out.println("NOT EQUAL");
    }
}

也许CodingBat在代码中有一些不太明显的钩子,导致代码在那里“工作”,但在IDE中不工作。

main的返回类型为void。你是回布尔人。布尔值不是空的。它是布尔型的。您不应该从返回类型为void的方法返回布尔值。@JBNizet为什么它当时在codingbat上工作?很可能不是。或者,codingbats实际上并不执行您发布的代码,而是在编译和运行之前对其进行修改。@JBNizet ok thnks