无法访问的代码 - 在 switch 语句中的返回后放置一个中断

Isa*_*son 2 java methods netbeans

我试过查这个,虽然其他人问过这个,但他们的情况适用于不同的事情(据我所知)。

我正在学习 Java,我正在创建一个与用户“交谈”、提出问题和其他东西的程序。作为实际学习面向对象编程概念的一个步骤,我创建了一个类来帮助我的主要项目不填充问题的处理,而是将大多数问题的处理和返回放在一个名为 ConversationHelper 的类中。

我在我的 ConversationHelper 中创建了一个方法来询问是/否问题。这是它的代码:

public boolean askYNQuestion(String question) {
    Scanner input = new Scanner(System.in);

    boolean isInputCorrect = false;

    while(isInputCorrect == false) {
    displayQuestion(question + " (Y or N)");
    String readin = input.nextLine();

    switch (readin.toLowerCase()) {
        case "n":
            return false;
            break;
        case "y":
            return true;
            break;
        case "yes":
            return true;
            break;
        case "no":
            return false;
            break;
        case "false":
            return false;
            break;
        case "true":
            return true;
            break;
        default:
            break;
    }
}
    System.out.println("THIS IS NOT SUPPOSED TO HAPPEN! FALSE DEFAULT!");
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这个问题比其他任何事情都更令人烦恼。switch 语句中的每个中断都会产生“无法访问的代码”,因为在它之前有一个 return 语句。然而,这是注定要发生的。

Netbeans 现在在构建时告诉我“编译器运行时出错”。这不仅很烦人,而且很难判断错误是这个已知错误,还是另一个需要我注意的错误,在我试图让我的程序工作时浪费时间。

我正在寻找一种不会产生错误的更好的方法来执行此操作,或者一种强制禁用此错误的方法。我正在使用 Java 8 运行 Netbeans。任何帮助将不胜感激。

谢谢!

tak*_*rkk 5

Areturn将充当break. 没有必要同时使用两者。如果您收到消息说您有无法访问的代码,那么它在那里没有任何意义,或者您之前所做的事情在逻辑上是无序的。

第二点,为了改进您的代码,您可以在 switch 语句中组合条件。如果您有多个返回相同内容的项目,您可以将它们一个接一个地列出,并为它们全部设置一个返回值。

 switch (readin.toLowerCase()) {
    case "n":
    case "no":
    case "false":
        return false;
    case "y":
    case "yes":
    case "true":
        return true;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)