Se lo scopo è di leggere da tastiera un numero non precisato di volte, allora tutto andrebbe dichiarato fuori dal while (in quel modo, infatti, tu vai a creare 2 nuovi oggetti per ogni iterazione del while... oggetti che sono sempre riferiti allo stesso InputStream, ovvero la tastiera).
Inoltre, consiglierei di separare tutti gli oggetti, in modo da poter effettuare un più corretto trattamento delle eccezioni:
codice:
InputStreamReader isr = null;
BufferedReader br = null;
try {
isr = new InputStreamReader( System.in );
br = new BufferedReader( isr );
while( flag ) {
... // Leggo da tastiera
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try { br.close(); } catch (Exception e) { }
} else {
if (isr != null) {
try { isr.close(); } catch (Exception e) { }
}
}
}
Ciao.