salve a tutti , questo e' il mio primo 3d su questo forum , ho cominciato da un paio di giorni ad aggiungere ad i miei programmini l' interfaccia grafica utilizzando awt , nello specifico questo programma deve gestire l' elenco di auto presenti in un concessionario : inserimento , rimozione , vedere la quantita' di auto nuove e usate ed il totale , tutta roba abbastanza semplice

il problema arriva quando devo eliminare un' auto dall' elenco , io assegno ad un bottone (dove prima si inserisce il numero di matricola) la funzione per rimuovere questa benedetta auto (geany compila , tutto ok ) ma quando vado a rimuoverne una ecco che .... puff un chilometro di exception

codice:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Concessionario.rimuovi(Concessionario.java:23)
    at Extra.actionPerformed(Extra.java:57)
    at java.awt.Button.processActionEvent(Button.java:409)
    at java.awt.Button.processEvent(Button.java:377)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
vi allego pure il codice della funzione per la rimozione ...
codice:
    public boolean rimuovi(String mat) {
        boolean ok=false;
        for(int i=0;i<v.length;i++){
            if(mat==v[i].getMatricola()){
                v[i]=null;
                ok=true;
                for(int p=i;p<v.length;p++){
                    v[p]=v[p+1];
                    v[p+1]=null;
                }
            }
        }
        return ok;
    }
grazie per le future risposte , aspetto con ansia