提问者:小点点

Java递归方法返回错误值


我对这种递归方法有一点问题。 我对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;
    }

共1个答案

匿名用户

首先,我认为您的意思是将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”);}