Che cos'è il metodo Scanner
per ottenere un char
restituito dalla tastiera in Java.Metodo scanner per ottenere un carattere
come nextLine()
per String
, nextInt()
per int
, ecc
Che cos'è il metodo Scanner
per ottenere un char
restituito dalla tastiera in Java.Metodo scanner per ottenere un carattere
come nextLine()
per String
, nextInt()
per int
, ecc
Per ottenere un char
da un Scanner
, è possibile utilizzare il metodo findInLine
.
Scanner sc = new Scanner("abc");
char ch = sc.findInLine(".").charAt(0);
System.out.println(ch); // prints "a"
System.out.println(sc.next()); // prints "bc"
Se avete bisogno di un po 'di char
da un Scanner
, allora può essere più conveniente (forse temporaneamente) cambiare il delimitatore per la stringa vuota. Questo renderà next()
restituisce una stringa length-1 ogni volta.
Scanner sc = new Scanner("abc");
sc.useDelimiter("");
while (sc.hasNext()) {
System.out.println(sc.next());
} // prints "a", "b", "c"
Questo ha un po 'più senso grazie – bizarrechaos
@poly: il delimitatore predefinito sarebbe ('" "') ...? come rimetterlo indietro? è questo il modo suggerito - chiedere perché questo è un inferno facile allora tutte le altre soluzioni date su SO !! – NoobEditor
'findInLine (". ")' Non corrisponderà a newline. Il secondo approccio fa. – user3669782
È possibile utilizzare la Console API (che ha fatto la sua comparsa in Java 6) come segue:
Console cons = System.console();
if(cons != null) {
char c = (char) cons.reader().read(); // Checking for EOF omitted
...
}
se avete solo bisogno di una sola riga non è nemmeno necessario passare attraverso l'oggetto reader:
String s = cons.readLine();
Grazie per la risposta rapida – bizarrechaos
La classe Scanner di Java non ha un metodo incorporato per leggere da uno scanner carattere per carattere.
http://java.sun.com/javase/6/docs/api/java/util/Scanner.html
Tuttavia, dovrebbe essere ancora possibile recuperare singoli caratteri dallo scanner come segue:
Scanner sc:
char c = sc.findInLine(".").charAt(0);
E è possibile usarli anche per andare a prendere ogni personaggio nello scanner in questo modo:
while(sc.hasNext()){
char c = sc.findInLine(".").charAt(0);
System.out.println(c); //to print out every char in the scanner
}
Il metodo findInLine() ricerca nello scanner e restituisce la prima stringa che corrisponde all'espressione regolare che si fornisce esso.
Console cons = System.console();
La riga di codice precedente crea cons come riferimento null. Il codice e l'output sono i seguenti:
Console cons = System.console();
if (cons != null) {
System.out.println("Enter single character: ");
char c = (char) cons.reader().read();
System.out.println(c);
}else{
System.out.println(cons);
}
uscita:
nullo
Il codice è stato testato su MacBook Pro con la versione Java "1.6.0_37"
sc .next(). charat (0) ......... è il metodo di immissione del carattere per utente in base al numero immesso in fase di esecuzione
esempio. sc.next() charat (2) ------------ >>>>>>>>
Scanner sc = new Scanner (System.in)
char c = sc.next().trim().charAt(0);
Aggiungere una spiegazione al codice. Cosa aggiunge questa risposta rispetto alle risposte già esistenti e accettate? – Raidri
Così scopre non c'è è costruito in modo . Ho finito per fare Str string = kb.nextLine(); char c = str.charAt (0); – bizarrechaos