我正在制作一个ATM,用户必须先输入他们的密码(1234),然后在正确输入密码后,用户才能提取50、100或200美元,或存入1000美元以下。我的提款方法都可以使用,但是当我运行程序并尝试进行任何存款时,输入金额并尝试单击“输入”按钮后什么也没有发生。好像我的输入按钮不起作用。这是用于我的存款方法的代码:
if (event.getSource() == deposit) {
instructionScreen.setText("Enter the amount you would like to deposit, then click Enter.");
if (event.getSource() == enter) {
saveScreen = displayInput.getText();
double add = Double.parseDouble(saveScreen);
if (add <= 1000) {
balance += add;
instructionScreen.setText("Your new balance is $" + balance + ".");
}
else {
instructionScreen.setText("The maximum amount you can deposit is $1000. Please enter a new amount.");
displayInput.setText("");
if (event.getSource() == enter) {
saveScreen = displayInput.getText();
add = Double.parseDouble(saveScreen);
}
}
displayInput.setText("");
System.out.println("A deposit of $" + add + "was made. Your new balance is $" + balance);
}
}
输入存款金额后按Enter键导致存款不执行任何操作的代码有什么问题?
最佳答案
如果您的程序是线性控制台程序,则该程序会很好用,但这不是事件驱动程序的工作原理。如果选择了存款,则需要更改对象的状态,而不是期望源立即从存款更改为魔术,而是通过更改布尔值字段,然后在Enter的动作侦听器中测试该字段,来更改对象的状态。
例如。,
if (event.getSource() == deposit) {
instructionScreen.setText("Enter the amount you would like to deposit, then click Enter.");
depositState = true; // a boolean field
} else if (event.getSource() == enter) {
if (depositState) {
depositState = false; // reset it
saveScreen = displayInput.getText();
double add = Double.parseDouble(saveScreen);
// .... etc