为什么这会给出意想不到的 return 值?

Why does this give unexpected 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;
}}

我的猜测是您的期望与某种人工制品有关。当然,对 shank 的检查应该表明它等于 hi。您正在 return 从 void 方法中获取布尔值,并且没有 return 类型。考虑以下版本,它按预期工作:

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 在您的代码中有一些不太明显的钩子,导致代码 "working" 在那里,但不在您的 IDE.