2015-10-15 44 views
0

我正在制作一个自动取款机,用户必须先输入自己的PIN码(1234),然后一旦输入正确的PIN码,用户就可以取出50,100或200美元,或者存入1000美元以下的存款。我的提款方式全部正常,但是当我运行我的程序并尝试存款时,输入金额并尝试点击“输入”按钮后没有任何反应。好像我的输入按钮不起作用。下面是用于我的存款方法的代码:java-为什么我的“存款”方法不适用于我的ATM与gui?

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); 
    } 
} 

有什么不对是导致我的存款没有做任何事情时,我打进入量存入后输入验证码?

回答

2

如果它是一个线性控制台程序,那么您的程序将很好用,但这不是事件驱动编程的工作方式。您可以通过更改布尔型字段,然后在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 
相关问题