Dunque il mio problema è la realizzazione del metodo searchAccount() che soddisfa le seguenti specifiche:
- Il metodo searchAccount() deve verificare l'esistenza del conto corrente passato come parametro nell'insieme dei correnti correnti esistenti nella banca e memorizzati nel vettore.
La mia implementazione è la seguente:
Ottengo però a runtime dei comportamenti indesiderati! In particolare dato questo main:codice:public class Bank { private BankAccount[] accounts; private int accountsNumber; private String bankCode; private static final int MAX_NUMBER_OF_ACCOUNTS = 100; public Bank (String bankCode){ this.bankCode = bankCode; accounts = new BankAccount[MAX_NUMBER_OF_ACCOUNTS]; } public String getBankCode() { return bankCode; } public int getAccountsNumber() { return accountsNumber; } public void addAccount(BankAccount ba) { //Il metodo addAccount() deve aggiungere il conto corrente passato //come parametro al vettore dei conti correnti presente nella banca, //se non e' già presente. if(!searchAccount(ba)) for(int i=0;i<=accounts.length-1;i++) if(accounts[i]==null) accounts[i]=ba; } public boolean searchAccount(BankAccount ba) { // Il metodo searchAccount() deve verificare l'esistenza // del conto corrente passato come parametro nell'insieme // dei correnti correnti esistenti nella banca e memorizzati nel vettore. boolean trovato=false; int count=0; while(count<=accounts.length-1) { if(accounts[count]!=null &&(accounts[count].getCode().equals(ba.getCode()))) trovato=true; else trovato=false; count++; } return trovato; } public String toString(){ String output = "Codice banca: " + bankCode + ", lista conti correnti: \n"; for(int i = 0; i < accountsNumber; i++){ output = output + accounts[i] + "\n"; } return output; } }
Eseguendo tale main ottengo il seguente output:codice:public class Main { public static void main(String[] args) { // print a large HTML header System.out.println("<h4>-- Bank account exercise --</h4>"); // create 5 objects of type BankAccount BankAccount c1 = new BankAccount("001",5); BankAccount c2 = new BankAccount("002",10); BankAccount c3 = new BankAccount("003",15); BankAccount c4 = new BankAccount("004",20); BankAccount c5 = new BankAccount("005",25); // creation one bank Bank b = new Bank("B001"); b.addAccount(c1); b.addAccount(c2); b.addAccount(c3); b.addAccount(c4); b.addAccount(c5); System.out.println("Search bank account having code " + c4.getCode() + ": "); System.out.println((b.searchAccount(c4))?"Found":"Not found"); System.out.println("c1.equals(c2)?" + (c1.equals(c2))); BankAccount c6 = new BankAccount("001",29); System.out.println("c1.equals(c6)?" + (c1.equals(c6))); //System.out.println(b); } }
Non va bene in quanto il code 004 è presente mentre viene restituito NOT FOUND.codice:<h4>-- Bank account exercise --</h4> Search bank account having code 004: Not found c1.equals(c2)?false c1.equals(c6)?true
Dove sbaglio?
Grazie
tulipan

Rispondi quotando