Per quanto riguarda comunque il codice di prima ho modificato leggermente il blocco try in questo modo:
codice:
try (Scanner sc = new Scanner(System.in)) {
            String stringa = null;
            while(sc.hasNext()) {
                if(stringa.equals("fine")) {
                    System.out.println("programma terminato");
                    break;
                }
                stringa = sc.nextLine();
                System.out.println("hai digitato: " + stringa);
            }
}
Questo codice mi genera una NullPointerException. Questa cosa accade perchè utilizzo uno Scanner e il metodo hasNext() andrà a scandire un riferimento a null?
Faccio questa domanda perchè se utilizzo invece, anzichè lo Scanner, un InputStreamReader decorato con un BufferedReader questo non accade.