intanto farei due modifiche al metodo cercaIndice
aumenti la leggibilità del codice.codice:private int indiceMonetaTrovata(Moneta moneta) { int indiceMonetaTrovata = -1; for(int i=0; i< monente.length && monete[i] != null; i++) { if(monete[i].getValore()==moneta.getValore()) { indiceMonetaTrovata = i; break; } } return indiceMonetaTrovata; }
Poi nota che di monete esiste una property che dice quanto è lungo l'array: usala.
La rimozione di una moneta comporta lo scorrimento di tutto l'array, quindi questa dovrebbe funzionare
codice:public void preleva(Moneta moneta) { System.out.println("Proviamo a prelevare una " + moneta.getDescrizione()); int indiceDaCercare = indiceMonetaTrovata(moneta); if(indiceDaCercare > -1){ System.out.println("E' stata prelevata una " + moneta.getDescrizione()); for(int i=indiceDaCercare; i < monete.length - 1; i++) { monete[i]=monete[i+1]; } monete [monete.length -1 ] = null; }else { System.out.println("moneta non trovata \n"); } }

Rispondi quotando