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:
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;
}
}
Ottengo però a runtime dei comportamenti indesiderati! In particolare dato questo main:
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);
}
}
Eseguendo tale main ottengo il seguente output:
codice:
<h4>-- Bank account exercise --</h4>
Search bank account having code 004:
Not found
c1.equals(c2)?false
c1.equals(c6)?true
Non va bene in quanto il code 004 è presente mentre viene restituito NOT FOUND.
Dove sbaglio?
Grazie
tulipan