Il problema è la riga evidenziata:
codice:
System.out.println("Inserire il secondo numero: ");
int num2 = input.nextInt();
nextInt() legge un intero... ma tu, per dare in pasto l'input al programma, scrivi '6' e poi premi INVIO. Ebbene... nextInt() prende il 6 e lo converte in intero, ma nel buffer di input c'è ancora l'INVIO... che viene letto dall'istruzione successiva, ovvero:
codice:
System.out.println("\nVuole continuare con una prossima operazione?: Y o N");
String decisione = input.nextLine();
Per questo non fai a tempo a dargli l'input... La gestione dell'input va fatta in modo oculato. Ci sono diversi modi per farlo. Quello che serve a te in questo momento è una "pulitura" del buffer: ovvero, dopo che hai letto l'intero con nextInt() devi effettuare una lettura "a vuoto" per pulire il buffer dal carattere di INVIO che ancora è lì.
codice:
System.out.println("Inserire il secondo numero: ");
int num2 = input.nextInt();
input.nextLine();
Io preferirei, al contrario, gestire l'input in modo diverso: leggere sempre e solo delle stringhe (quindi usare sempre nextLine()) ed effettuare la validazione manuale (quando necessito di un intero, faccio il parsing della stringa come intero, quando mi serve un double faccio il parsing della stringa come double, ecc). In questo modo non corro il rischio di lasciare nel buffer sporcizia che poi mi genera questo tipo di fastidi.
Ciao.