Hola, muy buenas.
He estado investigando cómo leer un carácter de la consola (saltándose los espacios, leyendo un carácter, y parar), pero no he encontrado nada que sea exáctamente eso. Quiero leer exactamente uno porque estoy leyendo posiciones en un tablero de ajedrez, las cuales se dan con la siguiente sintaxis: <columna><fila>, donde <columna> es una letra que va desde la 'a' hasta la 'h', y <fila> es un número del 1 al 8. Por ejemplo, la posición d5 indica la fila 5, columna 5 (empezando desde 1). La forma más típica que encuentro en internet es la siguiente:
scanner.next(".").charAt(0);
El problema, es que al poner d5, me salta la siguiente excepción:
CitarException in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:860)
at java.base/java.util.Scanner.next(Scanner.java:1497)
at java.base/java.util.Scanner.next(Scanner.java:1428)
at Ejercicio_08.main(Ejercicio_08.java:16)
Lo cual no tiene mucho sentido, porque '.' en la regexp significa un solo carácter.
Espero que puedan ayudarme, gracias
Si vas a leer de 1 en 1, puedes poner el delimitador a "":
scanner.useDelimiter("");
Y luego lees con:
scanner.next();
De todos modos, te recomendaría utilizar nextLine() y simplemente coger los caracteres que quieras de la línea.
¿De verdad Java no proporciona ninguna manera de leer un carácter? Puffffffffff
Otra opción es utilizar un BufferedReader en vez de un Scanner y utilizar read(), que lee 1 caracter.
No funciona con BufferedReader. Se salta el 5 (lee la palabra completa). Ah, creo que es porque BufferedRead tendrá un búfer interno, y estoy mezclando BufferedReader con Scanner. Solamente usaré BufferedReader
Cita de: class_OpenGL en 3 Noviembre 2017, 19:23 PM
creo que es porque BufferedRead tendrá un búfer interno
Es lo suyo xD