我已经尝试过这样做,虽然其他人已经问过这个问题,但他们的情况适用于不同的事情(据我所知)。
我正在学习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。非常感谢任何帮助。
谢谢!
答案 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;
}