我希望有人可以为我看看这个.我刚刚开始使用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)
但没有运气.有没有办法在没有递归的情况下再次调用该函数?
好的,你在yesOrNo()里面调用yesOrNo()的else上做的是递归.
要解决此问题,您需要从下一个电话中回复答案;
else {
System.out.println("Invalid input, try again!!");
return yesOrNo();
}
Run Code Online (Sandbox Code Playgroud)