2010-04-08 15 views
14

¿Cuál es el método Scanner para obtener un char devuelto por el teclado en Java.Método del escáner para obtener un char

como nextLine() para String, nextInt() para int, etc.

+0

Así resulta que hay no se construye en el método . Terminé haciendo String str = kb.nextLine(); char c = str.charAt (0); – bizarrechaos

Respuesta

20

Para obtener un char desde Scanner, puede usar el método 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" 

Si necesita un montón de char de un Scanner, entonces puede ser más conveniente (tal vez temporalmente) cambiar el delimitador de la cadena vacía. Esto hará que next() devuelva una cadena de longitud-1 cada vez.

Scanner sc = new Scanner("abc"); 
    sc.useDelimiter(""); 
    while (sc.hasNext()) { 
     System.out.println(sc.next()); 
    } // prints "a", "b", "c" 
+0

Eso tiene un poco más de sentido gracias – bizarrechaos

+0

@poly: por defecto Delimiter sería ('" "') ...? cómo configurar eso? ¿es esta la manera sugerida de preguntar porque este es el infierno más fácil que todas las otras soluciones dadas en SO !! – NoobEditor

+0

'findInLine (". ")' No coincidirá con las nuevas líneas. El segundo enfoque lo hace. – user3669782

4

Puede utilizar el Console API (que hizo su aparición en Java 6) de la siguiente manera:

Console cons = System.console(); 
if(cons != null) { 
    char c = (char) cons.reader().read(); // Checking for EOF omitted 
    ... 
} 

si sólo tiene una sola línea ni siquiera tiene que pasar por el objeto lector:

String s = cons.readLine(); 
+0

Gracias amigo por la respuesta rápida – bizarrechaos

2

La clase de escáner de Java no tiene un método incorporado para leer un escáner carácter por carácter.

http://java.sun.com/javase/6/docs/api/java/util/Scanner.html

Sin embargo, todavía debe ser posible acceder a los caracteres individuales desde el escáner de la siguiente manera:

Scanner sc: 

char c = sc.findInLine(".").charAt(0); 

Y usted podría utilizarlo para traer cada carácter en el escáner como esto:

while(sc.hasNext()){ 
    char c = sc.findInLine(".").charAt(0); 
    System.out.println(c); //to print out every char in the scanner 
} 

El método findInLine() busca a través de su escáner y devuelve la primera Cadena que coincide con la expresión regular que le da eso.

0
Console cons = System.console(); 

La línea de código anterior crea contras como referencia nula. El código y de salida se dan a continuación:

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

de salida:

nula

El código fue probado en pro macbook con la versión Java "1.6.0_37"

0

sc .next(). charat (0) ......... es el método para ingresar caracteres por usuario según el número ingresado en el tiempo de ejecución

ejemplo:. sc.next() charat (2) ------------ >>>>>>>>

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

Agregue una explicación a su código. ¿Qué agrega esta respuesta a las respuestas ya existentes y aceptadas? – Raidri

Cuestiones relacionadas