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