不可达代码-在switch语句的return语句后放置一个break



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

我正在学习Java,并且我正在创建一个与用户"对话"的程序,询问问题和其他东西。作为实际学习面向对象编程概念的第一步,我创建了一个类来帮助我的主要项目不被问题的处理所填充,而是将大多数问题的处理和返回放在一个名为ConversationHelper的类中。

我在我的ConversationHelper中创建了一个方法来询问Yes/No问题。下面是它的代码:

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;
}

这个问题比其他任何事情都更令人烦恼。switch语句中的每个break都会出现"不可达代码",因为在它之前有一个return语句。然而,这是注定要发生的。

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

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

谢谢!

return将充当break。没有必要两者都用。如果您收到消息,您有不可访问的代码,那么它在那里没有意义,或者您之前所做的事情在逻辑上是无序的。

作为第二点,为了改进代码,可以在switch语句中组合条件。如果你有多个返回相同结果的项,你可以一个接一个地列出它们,并为它们都放一个单一的返回。

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

相关内容

  • 没有找到相关文章

最新更新