我对这种递归方法有一点问题。 我对Java还很陌生。
此方法检查输入是否仅为“exit”或“start”,后跟两次“user”或“easy”。 除了返回之外,它工作得很好。 如果我输入了一个错误的输入,然后它上的一个右返回上一个错误的输入,我显然不能继续工作,这是为什么呢?
我以前也有过这个问题,但总是设法避免它。
您可能会注意到,当它被验证时,我打印出了一个有效的commadnd,这样可以很好地工作并产生我需要的结果。 但是当打印出第2行的函数返回时,就会出现上述问题。 我把数字加到打印的字符串上,这样我就能识别哪个是哪个了。
我曾尝试在有有效命令时立即返回,但我仍然需要在结束时返回,因为如果return语句排他在条件语句中,函数会给我一个错误,所以问题仍然存在。
谢谢你的帮助!
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;
}
首先,我认为您的意思是将recusive调用作为return setup()
调用。其次,当使用条件运算符(&&&)时,您应该使用()来确保得到您期望的逻辑条件。 如果要将其更新为:
>
返回安装程序
而不是setup()
验证用圆括号()将条件右部分括起来的内容:
else if(拆分[0].equals(“Start”)&&([拆分[1].equals(“Easy”)拆分[1].equals(“User”))&&([拆分[2].equals(“Easy”)拆分[2].equals(“User”))){system.out.println(“Valid Parameters!Start”);system.out.println(command+“1”);}