2016-05-12 9 views
-2

メソッドは、所定の量だけバランスを増やす必要があります。しかし、カード上の最大の残高はそれ以上になり、お金をロードした後にバランスが、それはメソッドの数学で失われた

public void loadMoney(int amount) { 
    if(balance + amount > 150){ 
     balance = balance +(balance + amount - 150);} 
    else{balance += amount; 

    } 

メイン150

方法に切り捨てられる必要がある場合には150である

ACard card = new ACard(10); 
    System.out.println(card); 

    card.loadMoney(15); 
    System.out.println(card); 

    card.loadMoney(10); 
    System.out.println(card); 

    card.loadMoney(200); 
    System.out.println(card); 

出力

ACard{balance=10} 
ACard{balance=25} 
ACard{balance=35} 
ACard{balance=120} //this blance should be 150 
+3

その式の代わりに 'balance = 150'を実行するだけです。 – cliffroot

+0

残高+金額> 150の場合、残高を150に設定するだけです。 – sascha

+0

実際には、計算式は newBalance = oldBalance * 2 + loadAmount - 150ですので、ここでの回答は完全に正解です。 –

答えて

4

上限を超えないように数値を制限する場合は、使用Math.min

public void loadMoney(int amount) { 
    balance = Math.min(150, balance + amount); 
} 

負の残高を防止したいですか?

Math.max(0, Math.min(150, balance + amount)); 
+0

ありがとうございます。限界を超えた金額を保管するのか?将来の使用のために – Exit

+0

これはあなたの最初の質問ではなかったので、私はそれを学習エクセリサイズとして残します。それ以外の答えはそれに適しています。とにかく –

+0

これはタイトルとタグで読むことができるので、これは数学の質問でした。クラスメソッドで解決しました。私が探していたものではない、または尋ねる – Exit

1
if (balance + amount > 150) { 
    programmer.balance += balance + amount - 150: 
    balance = 150; 
} 
1

私はあなたが必要以上に複雑な事をやっていると思います。

public void loadMoney(int amount) 
{ 
    balance += amount; 
    if (balance > 150) 
    balance = 150; 
} 
関連する問題