La differenza in generale..non so come spiegare..
Se devo fare dei controlli del tipo che faccio inserire all'utente una sequenza di interi e questo scrive una lettera allora so che devo fare un ciclo while così:

codice:
while (!tastiera.hasNextInt()) {
   tastiera.next();
   out.print("Inserisci un intero")
}
a = tastiera.nextInt();
ma perchè?