Semplicemente leggendo System.in con BufferedReader, si finisce per scrivere poche righe di codice di codice di attivazione.
Spostandoti su Scanner, come suggerito nella risposta di Neil, è più facile estrarre i dati di vario tipo dallo stream.
Personalmente, quando un'interfaccia a linea di comando è davvero la scelta migliore (che include ogni volta che è un requisito dichiarato), mi piace usare System.Console () . Non è sempre disponibile (ad esempio, quando si esegue all'interno di alcuni IDE), ma quando lo è, offre cose utili come readPassword () che impedisce che l'input dell'utente venga riportato indietro allo schermo e lo rende così che tu possa leggere da e scrivere sulla console usando lo stesso oggetto. È davvero progettato attorno al tipico caso d'uso per gli strumenti a riga di comando che richiedono l'interazione dell'utente.
L'uso di System.console () non è esplicitamente in conflitto con Scanner:
Console console = System.console();
String name = console.readLine("Please enter your name: ");
Scanner ageScanner = new Scanner(console.readLine("How old are you? ");
int age = ageScanner.nextInt();
Non giocano perfettamente insieme in questo modo, dal momento che devi istanziare un nuovo scanner per ogni linea. La console offre l'accesso a un Reader, che puoi utilizzare per creare un'istanza di uno scanner:
Console console = System.console();
String name = console.readLine("Please enter your name: ");
Scanner consoleScanner = new Scanner(console.reader());
int age = consoleScanner.nextInt();
(Disclaimer: Non ho provato il codice di cui sopra, e non sono esattamente sicuro di come si comportano le cose se usi console.readLine () mescolato con gli usi di uno Scanner fatto da console.reader (). Per chiarezza e coerenza, potrebbe essere saggio scegliere un metodo e attenersi ad esso.)
Seguendo questo esempio, sarei più propenso a scrivere:
Console console = System.console();
String name = console.readLine("Please enter your name: ");
int age = Integer.parseInt(console.readLine("How old are you? ");
A seconda delle tue esigenze, potresti scoprire che uno, l'altro o entrambi sono più adatti alle tue esigenze. In generale, trovo che Scanner sia più adatto alla lettura di un file con un formato noto, e Console è più adatto all'input dell'utente interattivo, perché lo scanner brilla davvero quando si hanno più token per riga di input. Chiedere a un utente di inserire questo tipo di input in modo interattivo probabilmente non porterà alla migliore esperienza.
JavaDoc: java.io.Console
Domanda correlata: Java: come ottenere input da System.console ()