La variabile "n" è dichiarata di tipo intero ed è corretto.
Il metodo nextInt() di Scanner tenta di restituire il prossimo token come intero. Ed è ok.

Tutto il lavoro per verificare che l'input dell'utente sia effettivamente un intero viene svolto già dalla classe Scanner che solleva un'eccezione (InputMismatchException) in caso l'utente digiti qualcosa che non sia effettivamente un intero.

Detto questo, se usi Scanner in quel modo, l'unica cosa per "preoccuparti" che l'input sia corretto è gestire l'eccezione indicata con il blocco try/catch (non so se avete già affrontato questo argomento... se non lo avete visto, attenderei prima di addentrarmi in questo mondo).

L'alternativa è usare nextLine() ed ottenere tutta la riga che l'utente ha digitato, per poi fare a mano i dovuti controlli e conversioni.

Sinceramente, la condizione del do/while che hai scritto non ha alcun senso:

codice:
(n < 0 || n%2 != 0 || n%2 != 5)
Con questa condizione il ciclo viene ripetuto se n < 0 (ok), oppure se n è dispari (perchè??)... l'ultima condizione non saprei nemmeno come esprimerla visto che è sempre rigorosamente vera (il resto della divisione per 2 non potrà mai essere 5... in generale, il resto della divisione per X sarà sempre rigorosamente minore di X... questo è un concetto matematico che dovrebbe essere ben chiaro, altrimenti andiamo a farfalle). Data l'ultima condizione senza senso, il ciclo viene ripetuto sempre e comunque.


Ciao.