Java 设置最大取款限制逻辑
我正在开发一个样本银行应用程序,我的银行可以从不同的人的帐户贷款给借款人。 银行有一个最高限额,规定每个人从账户中取多少钱才能达到所需金额 我写了这段代码,在那里我可以得到可以提供贷款的人的名单,而且效果很好。 现在,我需要设定一个上限,即我可以从每个人的储蓄账户中最多提取500美元Java 设置最大取款限制逻辑,java,Java,我正在开发一个样本银行应用程序,我的银行可以从不同的人的帐户贷款给借款人。 银行有一个最高限额,规定每个人从账户中取多少钱才能达到所需金额 我写了这段代码,在那里我可以得到可以提供贷款的人的名单,而且效果很好。 现在,我需要设定一个上限,即我可以从每个人的储蓄账户中最多提取500美元 public static List<Person> persons(final List<Person> person, final Long amount) { Lis
public static List<Person> persons(final List<Person> person, final Long amount) {
List<Person> results = new ArrayList<>();
Long balance = amount;
for (Person p : person) {
if (p.getAvailableAmount().compareTo(balance) < 0) {
results.add(p);
balance = balance - p.getAvailableAmount();
}
else if (p.getAvailableAmount().compareTo(balance) > 0) {
p.setAvailableAmount(p.getAvailableAmount() - (p.getAvailableAmount() - balance));
results.add(p);
break;
}
else {
results.add(p);
break;
}
}
return results;
}
我无法让这段代码正常工作
如果个人账户没有最高提款限额,当前的实施如下
public static List<Person> persons(final List<Person> person, final Long amount) {
List<Person> results = new ArrayList<>();
Long balance = amount;
for (Person p : person) {
if (p.getAvailableAmount().compareTo(balance) < 0) {
results.add(p);
balance = balance - p.getAvailableAmount();
}
else if (p.getAvailableAmount().compareTo(balance) > 0) {
p.setAvailableAmount(p.getAvailableAmount() - (p.getAvailableAmount() - balance));
results.add(p);
break;
}
else {
results.add(p);
break;
}
}
return results;
}
公共静态列表人员(最终列表人员、最终长金额){
列表结果=新建ArrayList();
长期余额=金额;
对于(个人p:个人){
如果(p.getAvailableAmount().比较到(余额)<0){
结果:添加(p);
balance=balance-p.getAvailableAmount();
}
如果(p.getAvailableAmount().compareTo(balance)>0),则为else{
p、 setAvailableAmount(p.getAvailableAmount()-(p.getAvailableAmount()-balance));
结果:添加(p);
打破
}
否则{
结果:添加(p);
打破
}
}
返回结果;
}
有int MAX\u drawin\u to\u NOW=500代码>在类级别的人员内部,您可以按如下方式调整代码以检查条件:-
public static List<Person> persons(final List<Person> person, final Long amount) {
List<Person> results = new ArrayList<>();
Long balance = amount;
for (Person p : person) {
if (p.MAX_WITHDRAWL_TILL_NOW > 500) {
if (p.getAvailableAmount().compareTo(balance) < 0) {
results.add(p);
balance = balance - p.getAvailableAmount();
}
else if (p.getAvailableAmount().compareTo(balance) > 0) {
p.setAvailableAmount(p.getAvailableAmount() - (p.getAvailableAmount() - balance));
results.add(p);
break;
}
else {
results.add(p);
break;
}
}
}
return results;
}
公开静态名单人员(最终名单人员、最终多头金额){
列表结果=新建ArrayList();
长期余额=金额;
对于(个人p:个人){
如果(p.MAX\u提取到现在>500){
如果(p.getAvailableAmount().比较到(余额)<0){
结果:添加(p);
balance=balance-p.getAvailableAmount();
}
如果(p.getAvailableAmount().compareTo(balance)>0),则为else{
p、 setAvailableAmount(p.getAvailableAmount()-(p.getAvailableAmount()-balance));
结果:添加(p);
打破
}
否则{
结果:添加(p);
打破
}
}
}
返回结果;
}
请根据您的要求添加自定义代码以更新MAX\u drawing\u to\u NOW
拥有实例变量可以帮助您为该类的每个实例管理对象级别的变量。理想的解决方案如下。
步骤1:将Max_capping
放入配置文件中。
步骤2:在Person类中添加一个字段(currentLentAmount类似于此),告诉您该Max\u capping中银行已经消费了多少。
第3步:你可以在你所共享的逻辑中考虑这个字段。< P>更好的解决方案应该是下面的一些东西,即在人类中创建一个新的方法来提供有限的数量。
Solution.java
public class Solution {
public static List<Person> persons(final List<Person> person, Long amount) {
List<Person> results = new ArrayList<>();
for(Person p : person){
Long available = p.getLimitedAvailableAmount();
if(amount <= available){
p.setAvailableAmount(p.getAvailableAmount() + (available-amount));
results.add(p);
break;
}
amount = available;
results.add(p);
}
return results;
}
}
class Person{
private static final long LIMIT = 500;
Long availableAmount;
public Long getAvailableAmount() {
return availableAmount;
}
public Long getLimitedAvailableAmount() {
long limited = (availableAmount > LIMIT) ? LIMIT : availableAmount;
availableAmount -= limited;
return limited;
}
public void setAvailableAmount(Long availableAmount) {
this.availableAmount = availableAmount;
}
}
将MAX\u drawr\u TILL\u NOW
定义为一个静态变量,并用它来检查您是否已经超过限制是的,但如何检查,这正是我正在努力解决的问题。条件基本上不是静态的,实例变量请不要进一步破坏这个问题。当你在这里提问时,你把你的问题捐赠给公众,这样它就可以永久用于堆栈溢出问答。许可条款在网站页脚中。