2015-10-15 47 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 
相關問題