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();
时,它跳过用户输入并在主函数中打破函数所在的循环。
答案 0 :(得分:0)
您很可能正在阅读Scanner
中没有消费换行符的金钱价值。在这种情况下,添加in.nextLine()
来使用此角色
double money = in.nextDouble();
in.nextLine(); // add
boolean result = check(money);
(当然BigDecimal
是货币金额的首选数据类型)
答案 1 :(得分:0)
一些观察结果:
.equals()
代替==
Java中的比较equalsIgnoreCase()
无论如何都会返回一个布尔值;您不需要在条件中执行布尔评估Scanner
类,正如@David Wallace所观察到的那样检查您对Scanner
课程的使用情况可能会有所收获。只需使用BufferedReader
暂时接收用户输入,即可确定这是否是问题的根源。
e.g。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
...
scont = br.readLine();