1 00:00:00,820 --> 00:00:09,740 Bueno, vamos a ver ahora una librería que es como la navaja suiza de la lectura dentro de Java, que se llama Scanner. 2 00:00:09,900 --> 00:00:12,099 Vamos a crear una clase nueva para trabajar con ella. 3 00:00:13,000 --> 00:00:17,960 La vamos a llamar lectura, por ejemplo, y vamos a decirle que tenga un main ya preparado. 4 00:00:20,550 --> 00:00:24,329 Bien, vamos a trabajar con esta clase de aquí. 5 00:00:25,390 --> 00:00:31,089 Bien, Scanner habitualmente se asocia a un descriptor de entrada. 6 00:00:31,089 --> 00:00:35,369 En este lo habitual es verlo para obtener datos desde el teclado. 7 00:00:35,729 --> 00:00:44,369 Para ello, no tendríamos más que llamar a la clase Scanner, crear un objeto y asociarle la entrada. 8 00:00:44,670 --> 00:00:47,490 En este caso, System.in. 9 00:00:48,890 --> 00:00:49,250 Muy bien. 10 00:00:50,289 --> 00:00:56,450 Como siempre nos dice que esta clase no tiene su librería conectada, pues vamos a conectarlo. 11 00:00:57,310 --> 00:01:01,070 Ahí nos dice que importemos. Hay varios casos, pero está claro que es de Java útil. 12 00:01:01,090 --> 00:01:05,290 de las más importantes, y nos sigue saliendo una cosa amarilla. 13 00:01:05,510 --> 00:01:09,310 Este amarillo, este aviso, nos dice que SC nunca se ha cerrado. 14 00:01:09,769 --> 00:01:14,730 Yo siempre que trabajo con entrada de datos, pongo el ejemplo de cuando abrimos un grifo. 15 00:01:14,909 --> 00:01:16,969 Un grifo lo abrimos y va saliendo agua. 16 00:01:17,829 --> 00:01:24,629 Y hasta que vamos a utilizar ese agua, y hasta que no cerremos el grifo, seguirá saliendo agua. 17 00:01:25,230 --> 00:01:29,969 Por lo cual, cuando aquí abrimos algo que da datos, van a seguir saliendo datos hasta que lo cerremos. 18 00:01:29,969 --> 00:01:36,849 Con lo cual, no se nos puede olvidar cerrarlo. En programas más complejos, incluso no cerrarlos puede darnos diversos problemas. 19 00:01:37,870 --> 00:01:47,969 Bien, una vez que yo he asociado SystemIn, que es la entrada estándar, la del teclado, a Scanner, pues yo ya puedo leer información. 20 00:01:48,750 --> 00:01:59,560 Por ejemplo, voy a crear una variable nombre y voy a leer algo con el método Next. 21 00:01:59,560 --> 00:02:09,240 Voy a hacer un pequeño comentario previo para que nos aparezca un prompt o algo que nos indique que tengamos que teclear algo. 22 00:02:10,840 --> 00:02:24,080 Bien, nombre, lo tecleamos y ahora podemos mostrar esta información con un mensajito, hola, pues, fulanito. 23 00:02:24,080 --> 00:02:40,460 Bien, si hacemos esto, vamos a ver lo que nos ocurre. Ejecuto, y en la parte de abajo vemos la consola, digo un nombre, por ejemplo, Ana, y efectivamente me dice Hola, Ana. 24 00:02:40,460 --> 00:02:59,120 Voy a ejecutarlo otra vez con un nombre compuesto, Ana Isabel, y veo que lo que me devuelve es solo Ana. Es decir, Next va leyendo hasta que encuentra lo que él considera un delimitador. 25 00:02:59,120 --> 00:03:08,139 ¿De acuerdo? Bueno, por defecto tiene unos delimitadores escáner ya incluidos, pero esta situación la podemos cambiar. 26 00:03:08,259 --> 00:03:11,240 Ya lo veremos después cuando estemos trabajando con ficheros cómo cambiarla. 27 00:03:11,819 --> 00:03:14,180 Incluso aquí ahora mismo podríamos cambiarla directamente. 28 00:03:14,400 --> 00:03:21,719 Podríamos decir que el delimitador que estamos utilizando siempre fuera el salto de línea, pero no nos interesa. 29 00:03:22,360 --> 00:03:25,719 También podemos ver que podemos teclear montones de informaciones. 30 00:03:25,719 --> 00:03:28,900 S, C, punto 31 00:03:28,900 --> 00:03:31,039 y vemos que podemos 32 00:03:31,039 --> 00:03:33,020 si ponemos next 33 00:03:33,020 --> 00:03:34,979 tenemos miles de opciones de campos 34 00:03:34,979 --> 00:03:36,479 que podemos leer, ¿de acuerdo? 35 00:03:37,360 --> 00:03:38,960 Teros, largos, 36 00:03:39,139 --> 00:03:40,960 cortos, etcétera, etcétera 37 00:03:40,960 --> 00:03:42,840 pero siempre con mucho cuidado 38 00:03:42,840 --> 00:03:44,860 entonces 39 00:03:44,860 --> 00:03:46,719 por ejemplo, yo podría preguntar 40 00:03:46,719 --> 00:03:49,219 preguntar el nombre 41 00:03:49,219 --> 00:03:50,599 y ahora voy a preguntar 42 00:03:50,599 --> 00:03:52,639 la edad, voy a poner aquí 43 00:03:52,639 --> 00:03:56,120 int edad, voy a poner 44 00:03:56,120 --> 00:04:13,099 que me pida un entero. Voy a poner un mensajito que me muestre el prompt y vamos a mostrar 45 00:04:13,099 --> 00:04:28,639 también la edad. No sé cuántos años. Muy bien. Pues vamos a ver cómo ejecutaríamos 46 00:04:28,639 --> 00:04:33,120 esto. Ya sabemos que nos fallaría si ponemos un nombre compuesto, con lo cual vamos a probarlo 47 00:04:33,120 --> 00:04:42,139 con un nombre simple. Ana tiene 23 años. Perfecto. ¿Qué ocurriría si lo pruebo con 48 00:04:42,139 --> 00:04:52,860 Ana Isabel? Pues me diría Ana Isabel y directamente se me rompería el programa. Vamos a ver la 49 00:04:52,860 --> 00:04:58,920 salida completa porque le interpretaría Isabel como el siguiente campo que va a leer y claro 50 00:04:58,920 --> 00:05:05,240 no coincide con un número entero, ¿de acuerdo? Incluso la excepción que nos brinda es input 51 00:05:05,240 --> 00:05:10,279 mismatch excepción, o sea, excepción de que no coincide el oratorio de entrada, ¿de 52 00:05:10,279 --> 00:05:15,480 acuerdo? Así que tenemos que solucionar alguna cuestión previa. Pues, por ejemplo, podemos 53 00:05:15,480 --> 00:05:20,779 decir que no quiero leer solamente el primer ítem que me teclea, sino quiero leer toda 54 00:05:20,779 --> 00:05:39,189 la línea. Next line. Vamos a ver ahora si el ejemplo anterior funcionará. Nombre, Ana Isabel. Ahora ya si me lee bien Isabel y ahora casi seguro que no voy a tener problemas en la edad. 55 00:05:39,949 --> 00:05:48,889 ¿De acuerdo? Una herramienta muy potente de la cual vamos a empezar a aplicar dentro de poco en ficheros y vemos cómo vamos cambiando toda esta información.