Java 如何在不退出程序的情况下在do while循环中添加if语句?
我有两门课。这个程序几乎模拟了ATM机。用户将要求存款、取款或查看用户银行帐户的余额 余额将首先设置为零,然后用户可以存款或取款 称为Java 如何在不退出程序的情况下在do while循环中添加if语句?,java,Java,我有两门课。这个程序几乎模拟了ATM机。用户将要求存款、取款或查看用户银行帐户的余额 余额将首先设置为零,然后用户可以存款或取款 称为CheckingAccount的第一个类将具有方法而没有主方法,而TestCheckingAccount具有主方法。所有输入和输出都将出现在TestCheckingAccount类中,而CheckingAccount进行计算 如果用户选择存款,则账户余额将添加到用户希望存入其账户的金额中。CheckingAccount类中的getBalance方法返回用户帐户的余
CheckingAccount
的第一个类将具有方法而没有主方法,而TestCheckingAccount
具有主方法。所有输入和输出都将出现在TestCheckingAccount
类中,而CheckingAccount
进行计算
如果用户选择存款,则账户余额将添加到用户希望存入其账户的金额中。CheckingAccount
类中的getBalance
方法返回用户帐户的余额,而processDeposit
将用户希望存入的金额添加到余额中,而processCheck
将用户选择的金额减少到余额中
如果用户选择查看余额,则会打印用户余额
检查帐户类
TestCheckingAccount类
}
该程序运行正常,但我遇到的问题是,在用户完成并退出该程序之前,该程序必须询问用户是否希望存款、取款或查看余额
因此,当程序询问用户是否想存款、取款或查看账户余额时,必须在循环中。我把它放在一个do-while循环中。因此,当我运行程序并询问余额时,打印出余额,然后循环fine,然后程序再次询问他/她是否要取款、存款、查看余额或退出
但当我要求程序取款或存款时,它运行但不循环,而是退出循环
我怎样才能使程序可以取款或存款,但仍然循环并返回菜单,询问用户是否要存款或取款,而不仅仅是结束循环?您可以使用无限循环并在“退出”条件下中断。此外,您还可以使用关闭
扫描仪
。大概
try (Scanner in = new Scanner(System.in)) {
String choice;
double moneyAdded;
double moneySubtracted;
while (true) {
System.out.println("Deposit");
System.out.println("Withdraw");
System.out.println("Balance");
System.out.println("Exit");
System.out.println("**********************************************");
System.out.println("Which operation would you like to use?");
choice = in.nextLine();
if (choice.equalsIgnoreCase("Deposit")) {
System.out.println("How much money would you like to deposit?");
moneyAdded = in.nextDouble();
check.processDeposit(moneyAdded);
} else if (choice.equalsIgnoreCase("Withdraw")) {
System.out.println("How much money would you like to withdraw?");
moneySubtracted = in.nextDouble();
check.processCheck(moneySubtracted);
} else if (choice.equalsIgnoreCase("Balance")) {
System.out.printf("$%.2f%n", check.myBalance);
} else if (choice.equalsIgnoreCase("Exit")) {
break;
}
}
}
我认为现在发生的情况是,它在读取了一个double之后读取了一个空行,并且在
while
条件下没有检查该空行。为了帮助您学习,您应该设置一个断点或一些调试并检查此项
但是,只需使用not(!
)来指定何时退出循环,而不是何时留在循环中,这将更容易,这意味着您不需要选择以下选项字符串:
do
{
... //this will repeat until they type Exit
}
while (!choice.equalsIgnoreCase("Exit"));
然后还将删除代码:
//else if(choice.equalsIgnoreCase("Exit"))
//{
// System.exit(0);
//}
使用Scanner的next方法而不是nextLine
choice = in.next();
nextDouble不考虑最后一个换行符,因此它被留给nextLine方法。这意味着下一行在下次请求用户输入(空输入)时将读取换行符。由于输入与do循环继续的要求不匹配,程序将退出
我希望这个答案对你有帮助
//else if(choice.equalsIgnoreCase("Exit"))
//{
// System.exit(0);
//}
choice = in.next();