2010-04-08 13 views
14

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

+0

Così scopre non c'è è costruito in modo . Ho finito per fare Str string = kb.nextLine(); char c = str.charAt (0); – bizarrechaos

risposta

20

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" 
+0

Questo ha un po 'più senso grazie – bizarrechaos

+0

@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

+0

'findInLine (". ")' Non corrisponderà a newline. Il secondo approccio fa. – user3669782

4

È 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(); 
+0

Grazie per la risposta rapida – bizarrechaos

2

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.

0
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"

0

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) ------------ >>>>>>>>

0
Scanner sc = new Scanner (System.in) 
char c = sc.next().trim().charAt(0); 
+1

Aggiungere una spiegazione al codice. Cosa aggiunge questa risposta rispetto alle risposte già esistenti e accettate? – Raidri

Problemi correlati