Java 迷失在一种方法的数学中

Java 迷失在一种方法的数学中,java,math,methods,Java,Math,Methods,该方法应按给定的金额增加余额。然而,卡上的最大余额是150。如果加载货币后的余额超过此值,则应将其截断为150 方法 public void loadMoney(int amount) { if(balance + amount > 150){ balance = balance +(balance + amount - 150);} else{balance += amount; } 主要 输出 ACard{balance=10} ACard{

该方法应按给定的金额增加余额。然而,卡上的最大余额是150。如果加载货币后的余额超过此值,则应将其截断为150

方法

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

    }
主要

输出

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

如果要限制某个数字超过上限,则可以使用
Math.min

public void loadMoney(int amount) {
     balance = Math.min(150, balance + amount);
}
想要防止负平衡吗

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

我认为你做的事情比必要的要复杂

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

只要做
balance=150
而不是那个表达式。只要将balance设置为150,如果balance+amount>150。实际上现在你的公式是:newBalance=oldBalance*2+loadAmount-150,所以这里的答案120是完全正确的:)谢谢,但是如果我想存储超出限制的金额怎么办?这不是你最初的问题,所以我将把它作为一个学习练习。其他答案更适合这个问题,不管怎样,这是一个数学问题,你可以在标题和标签上看到,你用类方法解决了。不是我想要的,也不是我问的,我确实读过这个问题,你所要求的只是限制余额超过150。埃斯托斯·格林戈(Estos gringos piensan que todos deben hablar fluidamente e e su成语,si tengo problemas para expresar correction la pregunta es por no es mi成语,buena suerte con próximo President)。
if (balance + amount > 150) {
    programmer.balance += balance + amount - 150:
    balance = 150;
}
public void loadMoney(int amount)
{
  balance += amount;
  if (balance > 150)
    balance = 150;
}