Я предполагаю, что 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
можно просто реализовать метод получения для поля и изменить условие:
if (loan.getloanAmount() > 0) {
EDIT
Отвечая на Ваш вопрос от комментариев:
Чтобы удалить все займы с 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
}
}
EDIT
Использование .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();
}
}
Вы уже используете 'if' в приведенном выше коде, чтобы вы могли проверить, имеет ли текущий студент в цикле кредит. Где проблема? Кроме того, почему вы называете список кредитов «кредит» и единый кредит «займы».Это должно быть наоборот: 's' для множественной формы, no' s' для сингулярной формы. –
Да, сделал небольшую ошибку .. я понял, что это было неправильно, но еще не изменил его ... Но спасибо, что указали его снова :) – Emperial