ok, capito.

Dando un'occhiata alla soluzione del manuale (visto che ero fuori strada) ho provato a rifare la mia.
Vi posto solo il codice dei metodi preleva e del metodo utility indiceMonetaTrovata
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("moneta non trovata \n");
        }
        else 
        {
            monete[indiceDaCercare]=null;
            System.out.println("E' stata prelevata una " + moneta.getDescrizione());
            for(int i=indiceDaCercare; i<monete.length; i++)
               {    
                      monete[indiceDaCercare]=monete[indiceDaCercare+1];
               }            
        }
    }
    
    
    private int indiceMonetaTrovata(Moneta moneta)
    {
        int indiceMonetaTrovata = -1;
        for(int i=0; i<10; i++)
        {
            if(monete[i]==null)
            {
                break;
            }
            else if(monete[i].getValore()==moneta.getValore())
            {
                indiceMonetaTrovata = i;
                break;
            }
        }
        return indiceMonetaTrovata;
    }

Ora funziona però ho un dubbio sul pezzo di codice che vi ho evidenziato.
Se io non faccio quel controllo (mi sa che neanche la soluzione del libro lo riporta) nel momento in cui vado a stampare, dopo l'eventuale rimozione della moneta, il contenuto del portamonete sarà stampato il contenuto fino all'elemento immediatamente precedente a quello rimosso e questo perchè (tramite il metodo stato()) appena viene riconosciuto l'elemento null all'interno dell'array si interrompe la stampa.
Ho provato così a inserire quelle righe però viene semplicemente copiato il valore dell'elemento successivo a quello cancellato nella posizione dell'elemento cancellato.
Ad esempio io ho questo array di oggetti Moneta con questi valori:
2
5
1
10
50
10
1
2
50
e voglio eliminare una moneta da 50 centesimi. Mandando in esecuzione il programma mi viene stampato questo array:
2
5
1
10
10
10
1
2
50