2014-02-05 5 views
-1

Это программа ATM, которую мне поручили делать для класса. У меня проблема с этой функцией. Учетная запись не может быть ниже 25, если транзакция должна быть отклонена. Я не уверен, что я делаю неправильно здесь. Могу ли я получить совет?Почему моя инструкция if работает неправильно?

public void withDrawal(double amount) 
{ 
    if(getbalance() > = 25 && getbalance() > amount) 
    {  
     super.setwithdraws(amount);   
        withdrawlsCheck(); 
     JOptionPane.showMessageDialog(null," WITHDRAW SUCCESSFULL"); 
    } 

    if(getbalance() <= 25 && getbalance() < amount) 
    { 
     JOptionPane.showMessageDialog(null," Transaction Declined !!!! Your account must have at least $25 "); 
    } 

} 

ответ

2
if ((getBalance() - amount) < 25) { 
    don't do the transaction 
else { 
    do the transaction 
} 

Также используйте верблюжьего правильно.

И еще одна мысль о стиле. 25 действительно должен быть объявлен как постоянный, а не оставаться висящим как «магическое число».

+0

Спасибо за вашу помощь, это сработало безупречно. Я обращу больше внимания на мой верблюд. – ErickBRCC

0
  1. > = не означает много, вы, вероятно, хотите >=. Я предполагаю, что это то, что вы на самом деле получили, это просто опечатка в вашем посте.
  2. Вы не хотите, чтобы >= 25 при одном условии и <= 25 с другой. Попробуйте < 25, так что 25 не покрывается обоими условиями.
  3. Ваша логика должна проверять баланс после снятия, а не раньше. getBalance() > (amount + 25) ближе к тому, что вы хотите.
  4. Ваша логика охватывает только два из четырех сценариев. У вас «достаточно баланса и не менее 25», «недостаточно баланса и не более 25» .. как насчет «достаточного баланса и не более 25» и «недостаточно баланса и не менее 25»? Обратите внимание, что этот момент неважен, как только пункты 2 и 3 реализованы; Я просто комментирую, как вы сначала придумали логику.
Смежные вопросы