Per le prossime volte ricordati che dire "non funziona" è troppo generico, specifica meglio i problemi che riscontri, che siano eccezioni a runtime (vedo che nei commenti parli di NullPointerException), o comportamenti inaspettati del programma.
Il codice che hai inserito però è incompleto e abbastanza incasinato (troppe righe vuote e indentamento confusionario), posta un codice che sia possibile compilare ed eseguire, così si fa molto prima a trovare gli errori...
Ecco comunque alcune cose che si notano subito:
- Non è corretto passare a Monoposto nel costruttore un vettore di oggetti Driver, Monoposto deve contenere un solo Driver, questo è abbastanza ovvio...
- Non dovresti costruire più Random, come detto ne basta uno, ma se non vuoi assegnarlo a una variabile di Race (e usare poi quello nei diversi metodi), almeno crealo all'inizio dei vari metodi ma comunque fuori dai cicli...
In generale poi quando ottieni eccezioni a runtime dovresti fare una sorta di "debug" in cui stampi i valori di tutte le variabili che possono causare l'eccezione, e poi risali indietro fino al momento dell'assegnazione dei valori per capire come mai sono ancora null: quasi sempre ti sarai dimenticato di inizializzare la variabile o starai eseguendo un metodo su di essa prima di averla creata, poi ci sono anche altri casi ovviamente.
Se posti il codice completo comunque ti posso dire molto di più![]()