Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    19

    [JAVA] Esercizio per testare ArrayList

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

  2. #2
    codice:
    ...
    if(a.getBalance() > largestYet.getBalance())
    ...
    largestYet vale null, non l'hai mai inizializzato!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    19
    Questo esercizio l'ho copiato dal libro per capire come si usano gli ArrayList.
    Come si inizializza un oggetto di tipo BankAccount ?

    codice:
    private BankAccount largestYet  = ?

  4. #4
    Originariamente inviato da cv91
    Questo esercizio l'ho copiato dal libro per capire come si usano gli ArrayList.
    Come si inizializza un oggetto di tipo BankAccount ?

    codice:
    private BankAccount largestYet  = ?
    Scusa, ma che domanda è? Qui non si tratta di aver copiato a meno un esercizio da un libro.
    Se non sai come istanziare un oggetto ti consiglio di ripassare le basi, magari ripartendo da qualche capitolo precedente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    19
    codice:
    BankAccount largestYet = accounts.get(0);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.