我需要能够打印出从阵列列表中获得贷款的所有学生。
意味着所有学生的金额都高于0。
我已经可以打印所有学生和他们拥有多少...但我不知道如何让它只打印学生贷款。
这是当前代码
删除个人原因
答案 0 :(得分:1)
我认为StudentLoan
有一个字段public int loanAmount
,然后你可以这样做:
for(StudentLoan loan : loans) {
int index=0;
if (loans.loanAmount > 0) {
System.out.print(index + " : ");
loan.printDetails();
index++;
}
}
这样只会打印loanAmount > 0
的贷款。
如果字段loanAmount
为private
,您只需为字段实现getter方法并将条件更改为:
if (loan.getloanAmount() > 0) {
修改强>
从评论中回答你的问题:
要删除loamAmount
为0的所有贷款,我们只需为每个循环添加另一个if
:
for(StudentLoan loan : loans) {
int index=0;
// print loans with amount > 0
if (loan.loanAmount > 0) {
System.out.print(index + " : ");
loan.printDetails();
index++;
}
// delete loans with amount = 0
if (loan.loanAmount == 0) {
loans.remove(loan) // UNSAFE! see edit below
}
}
修改强>
在迭代集合时使用.remove
是不安全的。它应该像iterator
一样完成:
import java.util.Iterator // add to imports
Iterator<StudentLoan> i = loans.iterator();
while (i.hasNext()) {
StudentLoan loan = i.next();
if (loan.getAmount() == 0) {
i.remove();
}
}
答案 1 :(得分:1)
我猜你在StudentLoan对象中有变量Amount的getter,即getAmount()。如果没有,你应该创建一个。
打印方法将更改为:
public void printLoanDitails()
{
System.out.println("Loan Summery: ");
int index=0; //This should be outside the loop, or it will be set to 0 each time
for(StudentLoan loans : loan) {
if(loans.getAmount() > 0)
{
System.out.print(index + " : ");
loans.printDetails();
index++;
}
}
System.out.println();
}
您也应该将此逻辑添加到PayOff方法中。
答案 2 :(得分:0)
如果没有看到你的studnetLoan类
,就不能确定你在使用print语句做什么你有:
for(StudentLoan loans : loan) {
int index=0;
System.out.print(index + " : ");
loans.printDetails();
index++;
}
我会做更多这样的事情:
for(StudentLoan loan : loanList) {
if(loan.getAmount() > 0)
loan.printDetails();
}
请注意,我已将贷款名单命名为“loanList”,或者可能是“贷款”,但将其称为“贷款”是没有意义的