¿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.
¿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.
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"
Eso tiene un poco más de sentido gracias – bizarrechaos
@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
'findInLine (". ")' No coincidirá con las nuevas líneas. El segundo enfoque lo hace. – user3669782
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();
Gracias amigo por la respuesta rápida – bizarrechaos
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.
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"
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) ------------ >>>>>>>>
Scanner sc = new Scanner (System.in)
char c = sc.next().trim().charAt(0);
Agregue una explicación a su código. ¿Qué agrega esta respuesta a las respuestas ya existentes y aceptadas? – Raidri
Así resulta que hay no se construye en el método . Terminé haciendo String str = kb.nextLine(); char c = str.charAt (0); – bizarrechaos