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

时间:2014-07-30 23:44:25

标签: java netbeans methods

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

我正在学习Java,我正在创建一个“#34;会话"与用户,提问和东西。作为实际学习面向对象编程概念的一个步骤,我创建了一个类,它可以帮助我的主项目不会处理问题,而是将大多数问题的处理和返回放在一个名为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;
}

这个问题比其他任何问题更令人烦恼。 switch语句中的每个中断都会出现"无法访问的代码"因为在它之前有一个退货声明。但是,这意味着要发生。

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

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

谢谢!

1 个答案:

答案 0 :(得分:4)

return将充当break。没有必要同时使用两者。如果您收到的消息是您有无法访问的代码,那么它就没有任何意义,或者您之前执行的操作在逻辑上是无序的。

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

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