Provate questo programma e aiutatemi a corregere l'errore.
Questo è quello che mi esce sulla console:
Count: 2
Expected: 2
Balance of matching account: 10000.0
Expected: 10000
Exception in thread "main" java.lang.NullPointerException
at Bank.getMaximum(Bank.java:43)
at BankTester.main(BankTester.java:24)
codice:
public class BankAccount {
public BankAccount(int anAccountNumber){
accountNumber = anAccountNumber;
balance = 0;
}
public BankAccount(int anAccountNumber, double initialBalance){
accountNumber = anAccountNumber;
balance = initialBalance;
}
public double getAccountNumber(){
return accountNumber;
}
public void deposit(double amount){
double newBalance = balance + amount;
balance = newBalance;
}
public void withdraw(double amount){
double newBalance = balance - amount;
balance = newBalance;
}
public double getBalance(){
return balance;
}
private int accountNumber;
private double balance;
}
import java.util.ArrayList;
public class ArrayListTester {
public static void main(String[] args) {
ArrayList<BankAccount> accounts = new ArrayList<BankAccount>();
accounts.add(new BankAccount(1001));
accounts.add(new BankAccount(1015));
accounts.add(new BankAccount(1729));
accounts.add(1, new BankAccount(1008));
accounts.remove(0);
System.out.println("Size: "+accounts.size());
System.out.println("Expected: 3");
BankAccount first = accounts.get(0);
System.out.println("First account number: "+first.getAccountNumber());
System.out.println("Expected: 1008");
BankAccount last = accounts.get(accounts.size() - 1);
System.out.println("Last account number: "+last.getAccountNumber());
System.out.println("Expected: 1729");
}
}
import java.util.ArrayList;
public class Bank {
public Bank(){
accounts = new ArrayList<BankAccount>();
}
public void addAccount(BankAccount a){
accounts.add(a);
}
public double getTotalBalance(){
double total = 0;
for(BankAccount a : accounts){
total = total + a.getBalance();
}
return total;
}
public int count(double atLeast){
int matches = 0;
for(BankAccount a : accounts){
if(a.getBalance() >= atLeast)
matches++;
}
return matches;
}
public BankAccount find(int accountNumber){
for(BankAccount a : accounts){
if(a.getAccountNumber() == accountNumber)
return a;
}
return null;
}
public BankAccount getMaximum(){
if(accounts.size() == 0)
return null;
for(int i = 1; i < accounts.size(); i++){
BankAccount a = accounts.get(i);
if(a.getBalance() > largestYet.getBalance())
largestYet = a;
}
return largestYet;
}
private ArrayList<BankAccount> accounts;
private BankAccount largestYet;
}
public class BankTester {
public static void main(String[] args) {
Bank firstBankOfJava = new Bank();
firstBankOfJava.addAccount(new BankAccount(1001, 20000));
firstBankOfJava.addAccount(new BankAccount(1015, 10000));
firstBankOfJava.addAccount(new BankAccount(1729, 15000));
double threshold = 15000;
int c = firstBankOfJava.count(threshold);
System.out.println("Count: "+ c);
System.out.println("Expected: 2");
int accountNumber = 1015;
BankAccount a = firstBankOfJava.find(accountNumber);
if(a == null)
System.out.println("No matching account");
else
System.out.println("Balance of matching account: "+ a.getBalance());
System.out.println("Expected: 10000");
BankAccount max = firstBankOfJava.getMaximum();
System.out.println("Account with largest balance: "+ max.getAccountNumber());
System.out.println("Expected: 1001");
}
}