【发布时间】:2013-10-21 01:16:20
【问题描述】:
static boolean check(double money)
{
String scont, yes = "yes", no = "no";
boolean bcont;
if (money == 0) {
System.out.println("You are broke and can no longer play.");
bcont = false;
return bcont;
}
System.out.println("You have " + form.format(money) + " left.");
System.out.println("Would you like to continue playing? (Yes or no?)");
scont = in.nextLine();
if (scont.equalsIgnoreCase(yes)) {
bcont = true;
return bcont;
}
else if (scont.equalsIgnoreCase(no)) {
bcont = false;
return bcont;
}
else {
System.out.println("Invalid answer.");
bcont = check(money);
return bcont;
}
}
显然,这只是我程序中的一个单一功能。当它到达scont = in.nextLine(); 时,它会跳过用户输入并在主函数中中断函数所在的循环。
【问题讨论】:
-
你确定要写
else if (scont.equalsIgnoreCase(no) == false) {吗? -
我怀疑问题可能不在此特定方法范围内。特别是,您可能正在从
Scanner获取一个数字,但没有获取它后面的新行。能否请您发布所有代码,以便我们看看这是否是问题所在? -
附注:
equalsIgnoresCase()返回一个布尔值。您不需要对布尔值进行比较(例如,equalsIgnoresCase() == true可以缩短为equalsIgnoresCase()。如果您希望执行条件块,则该方法返回false,您可以使用!(不是) 运算符。 -
感谢 Java 恶魔。听起来这可能是问题所在。我会检查并告诉你。
-
这似乎是问题所在。现在我有另一个问题。它将跳过用户输入一次。然后,它将转到 else 语句,调用自身,然后允许用户输入。这对我来说根本没有意义。
标签: java string input java.util.scanner