Salve a tutti, mi presento con questo primo topic su un problema che sto riscontrando in un programma.

Main:

codice:
if(mensola.setVolume(libro,np)==-1)
          System.out.println("Posizione non valida");
if(mensola.setVolume(libro,np)==-2)
          System.out.println("Posizione occupata");
else
          mensola.setVolume(libro,np);


Classe Mensola:

codice:
public int setVolume(Libro libro,int posizione){    
        if((posizione<0)|(posizione>NUM_MAX_VOLUMI))    //NUM_MAX_VOLUMI=15
            return -1;    //posizione non valida
        if(volumi[posizione]!=null)
            return -2;    //posizione occupata
        volumi[posizione]=libro;
        return posizione;
    }


Il problema sta nel ritorno del metodo setVolume in quanto ritorna sempre "-2" come se nella posizione data dell'array ci sia già un oggetto.
Sintatticamente il compilatore non mi dà problemi, potete aiutarmi?