2016-03-22 7 views
1

私がしようとしているのは、当座貸越限度を設定します。すなわち、-150の場合、ユーザーは残高が-150であればさらに引き出すことができません。私のコードは以下の通りです:当座貸越限度額の設定方法

方法

を撤回
public void Withdraw(double amount){ 


    if (amount + 5 > balance){ //If amount and transaction fee is greater than balance then apply for overdraft 
     System.out.println("Insufficent funds"); 
     System.out.println("Would you like to apply for an ovedraft?"); 
     System.out.println("1:Yes"); 
     System.out.println("2:No, return me back to menus"); 
     Choice = Option.nextLine(); 
     if (Choice.equalsIgnoreCase("1")){ 
     if((balance = balance - amount+5)<=-150){ //If balance is grater than 150 , apply for overdraft 
      System.out.println("You have exceeded your Overdraft Limit, you will now be returned back to the menus"); 
     return; 

     } 
     else{ //if not exceeding bank balance 
      balance -= amount + 5; 
      System.out.println("You have withdrawen £" + amount); 
      System.err.println("You now have a balance of £" +balance); 
      return; 
     } 
    } 
} 

} 

彼らは今何が起こることは、メッセージが発生しないということである、「アカウント」で同じクラスにすべてです - ( "あなたはあなたの当座貸越を超えていますあなたは今メニューに戻ってきます)、メニューに戻りますが、私が残高をチェックすると、お金はまだ差し引かれ、-150を超える残高が表示されます。 -190どのようにして-150が限界であり、それ以上は控除できないようにすることができますか?質問が理解されることを願っています。ここで

+1

スタックオーバーフローの値下げでは、あなたの変数を解釈します。ああ。 – Gendarme

答えて

4

は問題です:

if ((balance = balance - amount + 5) <= -150) { 

ここで重要な事は=ということです。それは新しい額の前にのチェックをしています。

このような問題は、この問題を回避する可能性があります。

if (balance - amount - 5 < 0) { 
     System.out.println("Insufficent funds"); 
     System.out.println("Would you like to apply for an ovedraft?"); 
     System.out.println("1:Yes"); 
     System.out.println("2:No, return me back to menus"); 
     Choice = Option.nextLine(); 
     if (Choice.equalsIgnoreCase("1")) { 
      if (balance - amount - 5 <= -150) { 
       System.out.println("You have exceeded your Overdraft Limit, you will now be returned back to the menus"); 
      } else { //if not exceeding bank balance 
       balance -= amount + 5; 
       System.out.println("You have withdrawen £" + amount); 
       System.err.println("You now have a balance of £" + balance); 
      } 

<= 0を使用して数学との比較をドライ実行していることに注意してください、より明示的な計算(if (balance - amount - 5 <= -150))。これは理解しやすくなります。

2

if((balance = balance - amount+5)<=-150)問題があります。まず、かっこ内にamount+5と書いていないので、代わりにamount-5にする必要があります。

第2に、ここで実際に残高を変更しています(=は割り当て演算子です)。 <の代わりに<=と書かれています。私はこの追加されます上記のすべての答えに

if(balance-(amount+5) < -150)

0

追加:あなたが代わりに書くべきことは次のとおりである私は1 $を持っていると私はの当座貸越を作る場合

50 $その後、私のアカウントが

1 $ -55 $ = -54 $

01にすることができクラスはあなたが大文字でそれらを書く原因として

が、ここで、この条件が不可能な

if (amount + FEES > balance) { // If amount and transaction fee is greater than balance then apply for overdraft 
System.out.println("Insufficent funds"); 
関連する問題