У меня небольшая проблема с этим методом рекурсии. Я новичок в Java.
Этот метод проверяет, является ли ввод либо «только выход», либо «начало», за которым следует два раза «пользователь» или «простой». Работает нормально кроме возврата. Если я ввожу неправильный ввод, а затем право на него возвращает предыдущий неправильный ввод, с которым я, очевидно, не могу продолжить работу, почему?
У меня была эта проблема раньше, но всегда как-то удавалось избежать это.
Вы могли заметить, что я распечатываю действительную команду сразу после ее проверки, это работает нормально и дает нужный мне результат. Но при выводе на печать возврата функции в строке 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;
}