l'errore sta dove fai:
codice:
for(int element : numeri) {
element =1+gen.nextInt(a+1);
}
fai un normale ciclo del tipo:
codice:
for (int i=0;i<a;i++) {
numeri [i] = 1+gen.nextInt(a+1);
}
Perchè non va bene la prima forma? QUI c'è una guida sulle differenze delle due forme del "for"
In pratica con la forma da te usata non abbiamo accesso alla struttura dati ma soltanto ai suoi elementi e quindi non puoi assegnare un valore a un qualcosa a cui non puoi accedere , ti sei perso il suo riferimento.
inoltre ci stanno alcune cose inutili nel tuo codice , ad esempio il reinserimento del numero "N"...chiedilo fino alla convalida ma non salvarlo in una variabile visibile solamente all'interno del while , dichiarala fuori e poi la modifichi all'interno del ciclo...anche alla fine la variabile "otto" è prolissa ,poichè la utilizzi in un unico contesto confronta direttamente con l'intero "8"