小编rub*_*uby的帖子

返回值如何在递归方法中起作用?【JAVA]

TLDR: java似乎只在方法运行时返回第一个值.我错了,还是有一种解决方法我不知道[不求助于循环]

我的目标是从返回的最后一个值[boolean]输出分配给方法,但是如果没有正确理解返回的工作原理我就无法做到.


代码的目的是通过读取用户输入从简单的选择[Y/N]返回布尔值.如果给出了错误的输出[例如:"p","P","apples"],则该方法应该再次提示用户,直到给出正确的输入.

这就是我开始使用的:

private Boolean nrCheck()
{   
    Scanner sc = new Scanner (System.in);
    Boolean isNewRelease;


    System.out.println("New Release [Y/N]? ");      
    String movieType = sc.nextLine();       

    switch (movieType)
    {
        case "Y" : case "y" :              isNewRelease = true;  break;
        case "N" : case "n" :              isNewRelease = false; break;
        default  : /*Try again*/ nrCheck();                      break; 
    }

    return isNewRelease;
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,因为默认情况下不分配值,导致初始化错误.

尝试通过分配默认值来解决此问题,如下所示:

private Boolean nrCheck()
{   
    Scanner sc = new Scanner (System.in);
    Boolean isNewRelease;


    System.out.println("New Release [Y/N]? "); …
Run Code Online (Sandbox Code Playgroud)

java recursion return-value boolean-expression switch-statement

2
推荐指数
1
解决办法
172
查看次数