Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不可访问代码-在switch语句中的return之后放置一个break_Java_Netbeans_Methods - Fatal编程技术网

Java 不可访问代码-在switch语句中的return之后放置一个break

Java 不可访问代码-在switch语句中的return之后放置一个break,java,netbeans,methods,Java,Netbeans,Methods,我试着查找这个问题,尽管其他人问过这个问题,但他们的情况适用于不同的事情(据我所知) 我正在学习Java,我正在创建一个与用户“对话”的程序,询问问题和其他东西。作为实际学习面向对象编程概念的一个步骤,我创建了一个类来帮助我的主要项目不必处理问题,而是将大多数问题的处理和返回放在一个名为ConversationHelper的类中 我在ConversationHelper中创建了一个询问是/否问题的方法。代码如下: public boolean askYNQuestion(String quest

我试着查找这个问题,尽管其他人问过这个问题,但他们的情况适用于不同的事情(据我所知)

我正在学习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;
}
这个问题比其他任何事情都更令人烦恼。switch语句中的每个中断都会出现“无法访问的代码”,因为它前面有一个return语句。然而,这是注定要发生的

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

我正在寻找一种更好的方法来做到这一点,不会产生错误,或是一种方法来强制禁用这个错误。我正在使用Java8运行Netbeans。任何帮助都将不胜感激


谢谢

A
返回
将充当
中断
。没有必要两者都使用。如果您收到一条消息,说您有无法访问的代码,那么它就没有存在的意义,或者您以前所做的事情在逻辑上是不正常的

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

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

此外,我已经验证了该程序仍然可以运行。它并没有阻止我运行它,但它会制造麻烦并使调试变得更加困难。为什么在
返回后必须保留
中断
?我想不出任何理由你会需要这个,通过移除它们你就能解决你的问题。此外,您还可以利用switch语句“fall-through”(我认为这就是术语)@takendarkreturn语句Return(如果触发这种情况的话)这一事实来简化代码。return语句是否自动充当break语句?如果没有,我仍然需要它们来保持switch语句的功能(因为编译器会寻找它来结束这个案例并继续下一个案例)。对于我的“失败”语句,尝试类似于
case“n”:case“no”:case“false”:return false
通常,在广泛使用的IDE(如Netbeans)上的默认警告是合适的,除非/直到您正在执行非常高级的操作或维护存在问题的现有代码。在编写新代码时,要使其在编译时不出现错误或警告,而不是向messenger开枪。谢谢!我会尽快将此设置为已接受的答案(需要三分钟)。