Riguardo il setVolume ci sono 2 finezze:
- Usa || invece che | . Il primo è il OR logico con comportamento "short-circuit". Se posizione<0 è già true, non perde tempo a valutare l'altro operando.
- NUM_MAX_VOLUMI lo intendi come il numero massimo di volumi oppure come la posizione massima che è ancora lecita? Perché se lo si intende (e dal nome io penserei così) come il numero massimo, allora la sua posizione è esclusa (essendo zero-based), quindi sarebbe più corretto posizione >= NUM_MAX_VOLUMI
-Si l'OR logico è stato un errore di distrazione oppure nel tentativo di cambiare qualche condizione mi sono dimenticato una |.
-Per NUM_MAX_VOLUMI intendo l'indice massimo dell'array volumi[], quindi come posizione massima.