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"); } }

Rispondi quotando