循环没有循环?

0 java recursion

我希望有人可以为我看看这个.我刚刚开始使用Java,这是我的第一个项目,但它有一个奇怪的错误我似乎无法弄清楚.

该方法应该根据用户输入的内容返回true或false.它确实有效,唯一的问题就是要求用户两次.它接受输入,然后再次询问并对第二个输入进行评估.我不知道该怎么称呼它,但如果有人能说出发生了什么,我真的很感激!

public static boolean yesOrNo(){
    System.out.print("Would you like to roll again? Type 'y' for yes or 'n' for no: ");
    char c = screen.next().trim().charAt(0);
    if (c == 'y' || c == 'Y' || c == 'n' || c == 'N') { 
        switch (c) {
        case 'y': return (true);
        case 'Y': return (true);
        case 'n': return (false);
        case 'N': return (false);
        }
    }
    else {
        System.out.println("Invalid input, try again!!");
        yesOrNo();
    }
    return (true);
}
Run Code Online (Sandbox Code Playgroud)

编辑:扫描仪的输入是

public static Scanner screen = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)

我在课堂顶部的课程顶部.它似乎没有在任何其他输入情况下给我带来问题.它不会打印任何其他内容,只是要求输入两次,即使我可以将一个print语句放在第一次获得该字符的位置.我也尝试将函数的调用更改为

return(yesOrNo());
Run Code Online (Sandbox Code Playgroud)

但没有运气.有没有办法在没有递归的情况下再次调用该函数?

Ash*_*Ash 5

好的,你在yesOrNo()里面调用yesOrNo()的else上做的是递归.

要解决此问题,您需要从下一个电话中回复答案;

else {
    System.out.println("Invalid input, try again!!");
    return yesOrNo();
}
Run Code Online (Sandbox Code Playgroud)