【发布时间】:2020-06-20 22:53:24
【问题描述】:
我对这种递归方法有点问题。我对 Java 还很陌生。
此方法检查输入是“exit”还是“start”,后跟两次“user”或“easy”。 除了退货外,它工作正常。如果我输入了一个错误的输入,然后它的右边返回了之前我显然无法继续工作的错误输入,这是为什么呢?
我以前遇到过这个问题,但总是设法避免它。
您可能会注意到我在验证时打印出一个有效的命令,这可以正常工作并产生我需要的结果。但是当在第 2 行打印出函数的返回值时,就会出现上述问题。我已经在打印的字符串中添加了数字,以便我可以识别哪个是哪个。
我尝试在有有效命令时立即返回,但我仍然需要在最后重新运行,因为如果返回语句仅在条件语句中,该函数会给我一个错误,因此问题仍然存在。
感谢您的帮助!
public static void main(String[] args) {
System.out.println(setup() + "3");
}
static String setup() {
System.out.print("Input command: ");
String command = input.nextLine();
String[] split = command.split(" ");
if(!(command.equals("exit") || split.length == 3)) {
System.out.println("Invalid parameters!");
setup();
}
else {
if(command.equals("exit")) {
System.out.println("Valid parameters! Exit");
System.out.println(command + "2");
}
else if(split[0].equals("start") && (split[1].equals("easy") || (split[1].equals("user")) && split[2].equals("easy") || split[2].equals("user"))) {
System.out.println("Valid parameters! Start");
System.out.println(command + "1");
}
else {
System.out.println("Invalid parameters!");
setup();
}
}
return command;
}
【问题讨论】:
-
用
return setup();替换setup(); -
您的问题是什么?我阅读了您的帖子两次,但无法理解预期的行为/结果是什么?
-
setup();->command = setup();