我正在制作一个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

08-03 17:50