1 00:00:00,430 --> 00:00:07,570 Estoy grabando, si vosotros habláis, me dais la autorización a que se pueda grabar, ¿vale? 2 00:00:07,570 --> 00:00:18,070 Entonces, nosotros hemos hablado de varias cosas, hemos hablado de hacer pequeños programitas, ¿vale? 3 00:00:18,109 --> 00:00:22,390 Creamos variables, luego procesamos estas variables, etcétera, etcétera, etcétera. 4 00:00:22,390 --> 00:00:35,469 Para que nuestro objetivo es que paso a paso estos ejercicios vayan siendo más complejos y a la vez más útiles. 5 00:00:35,869 --> 00:00:43,829 Los ejercicios que estamos haciendo ahora son muy básicos y tienen poco sentido, no sirven de nada en la práctica, en la vida real. 6 00:00:43,829 --> 00:00:52,450 Lo que iremos haciendo es añadir cosillas para que empiecen a tener un poquito más de sentido 7 00:00:52,450 --> 00:00:56,710 Dentro de este contexto, hoy vamos a ver dos cosas 8 00:00:56,710 --> 00:00:58,689 La salida básica y la entrada básica 9 00:00:58,689 --> 00:01:03,149 La salida básica en realidad ya la hemos visto, es el system.auto.println 10 00:01:03,149 --> 00:01:11,569 Como salida básica, es decir, cuando yo he recibido los datos, los he trabajado, he procesado todos los datos 11 00:01:11,569 --> 00:01:13,709 si ahora mismo tengo un resultado 12 00:01:13,709 --> 00:01:15,569 ¿cómo escribo este 13 00:01:15,569 --> 00:01:17,430 resultado? ¿vale? y hay muchas 14 00:01:17,430 --> 00:01:19,230 formas de hacerlo, lo puedo escribir en un fichero 15 00:01:19,230 --> 00:01:20,909 lo puedo mandar por 16 00:01:20,909 --> 00:01:23,549 por red, lo puedo 17 00:01:23,549 --> 00:01:25,689 compartir en una zona de memoria 18 00:01:25,689 --> 00:01:26,230 que se yo 19 00:01:26,230 --> 00:01:29,510 nosotros lo que hacemos es imprimirlo en pantalla 20 00:01:29,510 --> 00:01:31,590 ¿vale? con system.auto.println 21 00:01:31,590 --> 00:01:34,409 tened en cuenta que el system.auto.println 22 00:01:34,409 --> 00:01:35,530 lo que obtiene 23 00:01:35,530 --> 00:01:37,909 entre paréntesis es un string 24 00:01:37,909 --> 00:01:39,349 siempre es un string 25 00:01:39,349 --> 00:01:41,750 hasta cuando escribo un int 26 00:01:41,750 --> 00:01:43,709 en realidad lo que me hace 27 00:01:43,709 --> 00:01:45,769 él es hacer un casting 28 00:01:45,769 --> 00:01:47,689 hacer una transformación de este int 29 00:01:47,689 --> 00:01:49,150 como si le pegara delante 30 00:01:49,150 --> 00:01:51,730 abierta comillas, cerrada comillas, más 31 00:01:51,730 --> 00:01:52,750 y ese es int 32 00:01:52,750 --> 00:01:55,750 entonces el println 33 00:01:55,750 --> 00:01:57,370 imprime una cadena 34 00:01:57,370 --> 00:01:59,150 un string, una cadena de carácter 35 00:01:59,150 --> 00:02:01,510 entonces aquí son ejemplos 36 00:02:01,510 --> 00:02:03,290 de lo que puedes poner aquí 37 00:02:03,290 --> 00:02:05,530 puedes concatenar aquí, estos ya lo hemos 38 00:02:05,530 --> 00:02:07,530 hecho, vale, lo que no 39 00:02:07,530 --> 00:02:17,430 hemos hecho es la entrada básica. Es decir, hasta ahora yo creo una variable dentro del 40 00:02:17,430 --> 00:02:26,169 programa mismo. Creo int edad 23 y ahora mi alumno, mi lo que sea, tiene 23 años. Si 41 00:02:26,169 --> 00:02:33,729 yo quiero cambiar este 23, lo que tengo que hacer es cambiar el código fuente. Tengo 42 00:02:33,729 --> 00:02:41,810 que ir a Eclipse, entrar en esta variable, ponerle 24, ¿vale? Y recompilar todo. ¿Os 43 00:02:41,810 --> 00:02:46,689 imagináis vosotros que cualquier programa que estáis utilizando, normalmente por ejemplo 44 00:02:46,689 --> 00:02:51,870 Google, cuando vais a hacer una búsqueda en Google, en vez de escribir que haga la 45 00:02:51,870 --> 00:02:59,009 búsqueda, deberíais recompilar Google entero para hacer vuestra búsqueda? Eso no tiene 46 00:02:59,009 --> 00:03:04,030 mucho sentido. Las variables que nosotros utilizamos, como lo sabemos utilizar de otra 47 00:03:04,030 --> 00:03:09,370 forma, la escribimos directamente su valor en el código fuente, pero la cosa interesante 48 00:03:09,370 --> 00:03:16,250 sería que tú tengas una variable edad, pero que el valor de esta edad no venga desde el 49 00:03:16,250 --> 00:03:22,870 código fuente, sino que a tiempo de ejecución, cuando yo lanzo el programa, haya un cierto 50 00:03:22,870 --> 00:03:28,629 momento alguien que me pregunta, oye mira, ¿cuántos años tienes? Y que sea el usuario 51 00:03:28,629 --> 00:03:30,949 De ese programa que pone su edad 52 00:03:30,949 --> 00:03:32,870 Y en base a lo que ha puesto 53 00:03:32,870 --> 00:03:35,009 En su edad, el programa haga una cosa o otra 54 00:03:35,009 --> 00:03:36,770 O calcule lo que tiene que calcular 55 00:03:36,770 --> 00:03:38,710 El ejemplo pequeño que hemos 56 00:03:38,710 --> 00:03:40,490 Hecho antes de decir cuantos días 57 00:03:40,490 --> 00:03:42,710 Has vivido 58 00:03:42,710 --> 00:03:43,909 Si te doy mi edad 59 00:03:43,909 --> 00:03:46,810 Nosotros lo podemos hacer solo con 60 00:03:46,810 --> 00:03:48,430 El valor que hemos puesto 61 00:03:48,430 --> 00:03:50,530 Dentro de la variable, en el código 62 00:03:50,530 --> 00:03:53,009 Sería más interesante 63 00:03:53,009 --> 00:03:54,870 Ese programa, si yo pudiera preguntar 64 00:03:54,870 --> 00:03:56,949 Lanzo el programa, el programa ya ha sido 65 00:03:56,949 --> 00:03:57,990 Compilado y lanzado 66 00:03:57,990 --> 00:03:59,509 Y el programa me pregunta 67 00:03:59,509 --> 00:04:00,969 ¿Cuántos años tienes? 68 00:04:01,310 --> 00:04:03,930 Y tú pones 30 años 69 00:04:03,930 --> 00:04:06,210 Y él hace la multiplicación 70 00:04:06,210 --> 00:04:07,610 30 por 365 71 00:04:07,610 --> 00:04:08,509 Y me da el resultado 72 00:04:08,509 --> 00:04:10,569 Entonces has vivido no sé si no sé cuánto 73 00:04:10,569 --> 00:04:12,370 Es que si yo lo lanzo otra vez 74 00:04:12,370 --> 00:04:14,250 Sin haberlo recompilado 75 00:04:14,250 --> 00:04:15,409 Lo lanzo otra vez 76 00:04:15,409 --> 00:04:17,850 El usuario puede poner esta vez en vez de 30 77 00:04:17,850 --> 00:04:18,509 66 78 00:04:18,509 --> 00:04:20,910 ¿Sí? 79 00:04:22,089 --> 00:04:23,910 Eso es una cosa importante 80 00:04:23,910 --> 00:04:24,389 Porque 81 00:04:24,389 --> 00:04:28,610 Escala el nivel de abstracción 82 00:04:28,610 --> 00:04:30,529 A mi programa 83 00:04:30,529 --> 00:04:32,930 Ahora yo no estoy pensando 84 00:04:32,930 --> 00:04:35,069 A la edad 24 85 00:04:35,069 --> 00:04:37,490 Y entonces todo mi programa 86 00:04:37,490 --> 00:04:39,389 Está basado sobre el número 24 87 00:04:39,389 --> 00:04:41,810 Yo estoy pensando ahora 88 00:04:41,810 --> 00:04:44,170 Sobre la representación de ese dato 89 00:04:44,170 --> 00:04:46,209 Que es la variable edad 90 00:04:46,209 --> 00:04:49,129 Y todo lo que hago dentro del programa 91 00:04:49,129 --> 00:04:50,829 Será basado sobre esta edad 92 00:04:50,829 --> 00:04:52,829 Que no sé cuánto vale 93 00:04:52,829 --> 00:04:56,449 Lo sabré en tiempo de ejecución 94 00:04:56,449 --> 00:04:57,850 ¿Cuánto vale? 95 00:04:58,009 --> 00:04:59,170 Cuando yo lanzo el programa 96 00:04:59,170 --> 00:05:02,370 Alguien me dirá que para esta vuelta del programa 97 00:05:02,370 --> 00:05:03,410 Vale 37 98 00:05:03,410 --> 00:05:05,230 Vale, entonces usaré 37 99 00:05:05,230 --> 00:05:07,910 Pero a tiempo de programación 100 00:05:07,910 --> 00:05:09,610 Cuando yo estoy desarrollando 101 00:05:09,610 --> 00:05:12,329 No voy a saber cuánto vale 102 00:05:12,329 --> 00:05:15,430 Esta variable 103 00:05:15,430 --> 00:05:18,810 ¿Entendéis lo que quiero decir? 104 00:05:19,569 --> 00:05:20,930 Para hacer esto 105 00:05:20,930 --> 00:05:22,629 Lo que vamos a hacer 106 00:05:22,629 --> 00:05:24,930 es ver cómo se hace la entrada básica 107 00:05:24,930 --> 00:05:26,850 es decir, cómo puedo leer 108 00:05:26,850 --> 00:05:28,810 unos datos a tiempo 109 00:05:28,810 --> 00:05:30,230 de ejecución 110 00:05:30,230 --> 00:05:32,870 es decir, cómo puedo leer algo 111 00:05:32,870 --> 00:05:33,769 desde el teclado 112 00:05:33,769 --> 00:05:36,509 nuestra entrada básica 113 00:05:36,509 --> 00:05:37,730 será el teclado 114 00:05:37,730 --> 00:05:41,050 nuestro programa, al menos en el primer trimestre 115 00:05:41,050 --> 00:05:42,430 se basará en 116 00:05:42,430 --> 00:05:44,750 arranco el programa 117 00:05:44,750 --> 00:05:46,709 el programa mismo 118 00:05:46,709 --> 00:05:49,250 me pide algunos datos por teclado 119 00:05:49,250 --> 00:05:51,069 dame tu nombre, dame tu edad 120 00:05:51,069 --> 00:05:52,009 dame donde sea 121 00:05:52,009 --> 00:05:55,310 Y luego después yo proceso estos datos 122 00:05:55,310 --> 00:05:57,730 Y te doy una salida en base a lo que tú has puesto 123 00:05:57,730 --> 00:05:59,329 ¿Sí? 124 00:05:59,829 --> 00:06:01,949 Voy a hacer un programa solo 125 00:06:01,949 --> 00:06:06,829 Que luego podrá funcionar por un mogollón de datos distintos 126 00:06:06,829 --> 00:06:09,519 ¿Sí? 127 00:06:11,199 --> 00:06:12,360 Vale, entonces 128 00:06:12,360 --> 00:06:15,000 Nosotros, para simplificarnos la vida 129 00:06:15,000 --> 00:06:17,720 Vamos a usar una clase que ya existe 130 00:06:17,720 --> 00:06:20,220 Porque programar nosotros un programa 131 00:06:20,220 --> 00:06:22,319 que va a leer las teclas 132 00:06:22,319 --> 00:06:24,399 del teclado, es posible 133 00:06:24,399 --> 00:06:26,100 pero es complejo, vale 134 00:06:26,100 --> 00:06:28,079 y nosotros vamos a usar la clase 135 00:06:28,079 --> 00:06:28,779 Scanner 136 00:06:28,779 --> 00:06:31,079 Scanner es como 137 00:06:31,079 --> 00:06:33,779 los métodos Println, vale 138 00:06:33,779 --> 00:06:35,920 ¿de dónde vienen los métodos Println? 139 00:06:36,019 --> 00:06:37,779 pues existe una clase que se llama la 140 00:06:37,779 --> 00:06:40,660 Printstream, una cosa de ese estilo 141 00:06:40,660 --> 00:06:42,379 y nosotros de esa clase 142 00:06:42,379 --> 00:06:43,680 estamos utilizando el método 143 00:06:43,680 --> 00:06:46,160 Printline, vale 144 00:06:46,160 --> 00:06:48,000 ¿sabemos nosotros cómo está hecho? 145 00:06:48,100 --> 00:06:49,779 ¿cómo está escrita? ¿quién la ha escrito? No 146 00:06:49,779 --> 00:06:51,980 Viene en la librería de Java 147 00:06:51,980 --> 00:06:54,120 Y nosotros estamos felices de utilizarla 148 00:06:54,120 --> 00:06:55,699 Sin preguntarnos por qué funciona 149 00:06:55,699 --> 00:06:57,360 Lo mismo hacemos aquí 150 00:06:57,360 --> 00:06:59,360 Usamos esta clase scanner 151 00:06:59,360 --> 00:07:02,800 Que nos permite de escanear el teclado 152 00:07:02,800 --> 00:07:05,199 De leer cosas desde el teclado 153 00:07:05,199 --> 00:07:05,620 ¿Vale? 154 00:07:06,420 --> 00:07:08,199 Para poder utilizarla 155 00:07:08,199 --> 00:07:09,600 Tengo que hacer dos cosas 156 00:07:09,600 --> 00:07:12,819 Tengo que poner esta línea de aquí 157 00:07:12,819 --> 00:07:14,019 Que pone import 158 00:07:14,019 --> 00:07:17,660 Espacio java.util.asterisco.com 159 00:07:17,660 --> 00:07:21,399 Justo antes de public 160 00:07:21,399 --> 00:07:22,939 Clase, el nombre de mi clase 161 00:07:22,939 --> 00:07:25,360 Ahora lo veremos, ¿vale? ¿Dónde va? Hacemos un ejemplo 162 00:07:25,360 --> 00:07:27,319 Esto es 163 00:07:27,319 --> 00:07:29,699 Importa esta clase 164 00:07:29,699 --> 00:07:31,420 Importa scanner 165 00:07:31,420 --> 00:07:33,399 Si yo no importo scanner 166 00:07:33,399 --> 00:07:34,980 Scanner me da un problema, me dice 167 00:07:34,980 --> 00:07:37,000 No existe este scanner, ¿qué es scanner? 168 00:07:37,680 --> 00:07:39,819 ¿Vale? Si yo en vez lo importo 169 00:07:39,819 --> 00:07:40,920 Entonces me dice 170 00:07:40,920 --> 00:07:43,240 Ah, quieres utilizar el scanner 171 00:07:43,240 --> 00:07:45,399 Que está indefinido en la librería 172 00:07:45,399 --> 00:07:46,519 Java.util 173 00:07:46,519 --> 00:07:48,720 Ok, perfecto, vamos a utilizar eso 174 00:07:48,720 --> 00:07:49,740 ¿Sí? 175 00:07:50,300 --> 00:07:53,259 Y luego, tengo que crear 176 00:07:53,259 --> 00:07:55,540 Una variable 177 00:07:55,540 --> 00:07:56,800 Que se llama la scan 178 00:07:56,800 --> 00:07:58,240 ¿Vale? 179 00:07:58,560 --> 00:08:01,459 Que es de tipo 180 00:08:01,459 --> 00:08:03,040 Scanner, ¿vale? 181 00:08:03,339 --> 00:08:03,939 Y esto 182 00:08:03,939 --> 00:08:07,279 Nos complica un poco la cosa, no la entendemos 183 00:08:07,279 --> 00:08:08,600 Esto sería un objeto 184 00:08:08,600 --> 00:08:10,740 ¿Vale? Y por ahora 185 00:08:10,740 --> 00:08:12,360 No queremos entenderlo 186 00:08:12,360 --> 00:08:14,920 Nosotros utilizaremos esta letra 187 00:08:14,920 --> 00:08:16,240 Aquí, esta cosa aquí 188 00:08:16,240 --> 00:08:30,480 Esta frase de aquí, justo para decir, oye, yo creo una cosa, una referencia, este scan, que me permitirá, utilizándola de la forma oportuna, vemos ahora, de leer cosas desde el teclado. 189 00:08:30,480 --> 00:08:46,759 Es decir, que cuando yo ahora haré una determinada acción, ahora vamos a ver qué acciones son, mi programa se parará y estará a la espera de que mi usuario escriba algo en teclado y dé al Enter. 190 00:08:47,580 --> 00:08:53,120 Mientras que el usuario no ha escrito y no ha dado Enter, yo me quedo allí parado tranquilo. 191 00:08:55,940 --> 00:08:59,879 Entonces, esto de aquí va arriba del todo. 192 00:09:00,480 --> 00:09:05,059 Este de aquí va ya dentro del main, ¿vale? 193 00:09:05,120 --> 00:09:06,419 Y hay que escribirlo así. 194 00:09:06,419 --> 00:09:11,279 Una cosa que nos puede interesar es que nosotros hemos usado System.out, ¿vale? 195 00:09:12,000 --> 00:09:14,240 System.out.println. 196 00:09:14,399 --> 00:09:17,639 Está este System.out porque es la salida del sistema. 197 00:09:18,200 --> 00:09:24,000 Y aquí estamos utilizando System.in, la entrada del sistema. 198 00:09:24,679 --> 00:09:28,980 Porque quiero pasar datos desde fuera del ordenador hacia el ordenador. 199 00:09:28,980 --> 00:09:31,019 Entonces los datos entran 200 00:09:31,019 --> 00:09:31,259 Ahí 201 00:09:31,259 --> 00:09:36,299 Es un parámetro 202 00:09:36,299 --> 00:09:38,759 Del objeto escándalo 203 00:09:38,759 --> 00:09:40,019 Pero no sabemos que es 204 00:09:40,019 --> 00:09:42,399 Pues nosotros escribimos esto tal y cual 205 00:09:42,399 --> 00:09:43,940 Y funciona 206 00:09:43,940 --> 00:09:47,059 Dentro de un rato cuando veremos que son los objetos 207 00:09:47,059 --> 00:09:48,379 Entenderemos que es esto 208 00:09:48,379 --> 00:09:50,539 Y entenderemos que es hacer esta frase 209 00:09:50,539 --> 00:09:51,759 ¿Sí? 210 00:09:52,440 --> 00:09:55,620 Ok, una vez que yo he hecho estas dos líneas 211 00:09:55,620 --> 00:09:57,039 Entonces he creado este 212 00:09:57,039 --> 00:10:00,100 Objeto mágico que se llama scan 213 00:10:00,100 --> 00:10:01,759 Dentro de mi 214 00:10:01,759 --> 00:10:03,919 Dentro de mi programa 215 00:10:03,919 --> 00:10:05,700 Yo puedo crear 216 00:10:05,700 --> 00:10:08,179 Una variable por ejemplo cadena 217 00:10:08,179 --> 00:10:09,940 Y decir que cadena 218 00:10:09,940 --> 00:10:12,360 Es igual a scan.next 219 00:10:12,360 --> 00:10:13,539 Vale 220 00:10:13,539 --> 00:10:15,559 Scan.next 221 00:10:15,559 --> 00:10:17,259 Lo que hace es 222 00:10:17,259 --> 00:10:18,840 Parar el programa 223 00:10:18,840 --> 00:10:21,860 El programa se para en esta línea 224 00:10:21,860 --> 00:10:24,179 Y espera hasta que 225 00:10:24,179 --> 00:10:26,120 El usuario haya escrito 226 00:10:26,120 --> 00:10:28,019 una palabra y haya dado 227 00:10:28,019 --> 00:10:28,419 intro 228 00:10:28,419 --> 00:10:32,320 cuando este, el usuario ha escrito 229 00:10:32,320 --> 00:10:33,679 una palabra y ha dado intro 230 00:10:33,679 --> 00:10:36,059 esta palabra se guardará 231 00:10:36,059 --> 00:10:38,139 dentro de la variable cadena 232 00:10:38,139 --> 00:10:39,960 y a partir de ahora tengo 233 00:10:39,960 --> 00:10:52,360 esa palabra, tú podrías poner aquí 234 00:10:52,360 --> 00:10:53,779 dame tu nombre 235 00:10:53,779 --> 00:10:56,100 string nombre, nombre 236 00:10:56,100 --> 00:10:58,399 es igual a scan.nest 237 00:10:58,399 --> 00:10:59,620 entonces el programa 238 00:10:59,620 --> 00:11:02,539 escribe dame tu nombre, separa 239 00:11:02,539 --> 00:11:04,080 espera que tú hayas 240 00:11:04,080 --> 00:11:05,980 Escrito tu nombre, le he dado 241 00:11:05,980 --> 00:11:07,639 Intro, y a ese punto 242 00:11:07,639 --> 00:11:09,879 El nombre que he leído desde el teclado, lo meto 243 00:11:09,879 --> 00:11:11,440 Dentro nombre y sigue adelante 244 00:11:11,440 --> 00:11:12,539 ¿Vale? 245 00:11:17,289 --> 00:11:19,250 No lo sabemos, ¿vale? 246 00:11:20,009 --> 00:11:21,669 Nosotros, por ejemplo, con un nombre 247 00:11:21,669 --> 00:11:23,669 Con una string es fácil, porque string 248 00:11:23,669 --> 00:11:24,889 Te pilla todo, ¿vale? 249 00:11:25,090 --> 00:11:27,570 Con un int es más complejo, porque si yo te pido 250 00:11:27,570 --> 00:11:28,889 Un número y tú me escribes gato 251 00:11:28,889 --> 00:11:31,450 Pues él explotará, pobrecito, ¿vale? 252 00:11:31,830 --> 00:11:33,269 ¿Y qué sabemos hacer nosotros? 253 00:11:33,389 --> 00:11:35,429 ¿Sabemos hacer algo con esta explosión? No 254 00:11:35,429 --> 00:11:37,590 ¿Vale? Hasta que no veremos que son 255 00:11:37,590 --> 00:11:39,690 las excepciones, pues no haremos nada 256 00:11:39,690 --> 00:11:41,629 por ahora nosotros 257 00:11:41,629 --> 00:11:43,830 asumimos, grosso 258 00:11:43,830 --> 00:11:46,029 modo, que el usuario 259 00:11:46,029 --> 00:11:47,549 es una persona capaz 260 00:11:47,549 --> 00:11:49,610 y sabe, si le digo, dame tu nombre 261 00:11:49,610 --> 00:11:51,610 me escribe su nombre, en vez de darme su DNI 262 00:11:51,610 --> 00:11:52,509 ¿vale? 263 00:11:53,330 --> 00:11:55,549 luego, en un futuro, no 264 00:11:55,549 --> 00:11:57,750 en un futuro, seremos nosotros 265 00:11:57,750 --> 00:11:59,889 programadores, que cuando leo un número 266 00:11:59,889 --> 00:12:01,570 tendré que antes de 267 00:12:01,570 --> 00:12:04,250 utilizarlo, cerciorarme 268 00:12:04,250 --> 00:12:05,669 que efectivamente me ha dado un número 269 00:12:05,669 --> 00:12:06,809 y no me ha escrito su nombre 270 00:12:06,809 --> 00:12:08,690 ¿Sí? Pero por ahora no 271 00:12:08,690 --> 00:12:10,970 Por ahora somos buenos 272 00:12:10,970 --> 00:12:13,409 Y asumimos que los usuarios son capaces 273 00:12:13,409 --> 00:12:14,710 ¿Vale? Entonces 274 00:12:14,710 --> 00:12:16,529 Quiero leer una palabra 275 00:12:16,529 --> 00:12:18,129 Scan.nest 276 00:12:18,129 --> 00:12:20,409 ¿Y qué es esto? 277 00:12:27,370 --> 00:12:28,350 La función, un método 278 00:12:28,350 --> 00:12:30,309 ¿Vale? Es un método 279 00:12:30,309 --> 00:12:32,590 Definido en la clase Scanner 280 00:12:32,590 --> 00:12:37,000 Se llama Scan porque tú has querido 281 00:12:37,000 --> 00:12:38,659 Sí, lo podías llamar 282 00:12:38,659 --> 00:12:40,919 Cocodrilo, gato, hay una variable 283 00:12:40,919 --> 00:12:42,000 Es esto 284 00:12:42,000 --> 00:12:45,399 Se llama Scan porque yo aquí he definido 285 00:12:45,399 --> 00:12:47,500 scan, tipo 286 00:12:47,500 --> 00:12:49,600 nombre variable, valor de la 287 00:12:49,600 --> 00:12:51,159 variable, siempre igual 288 00:12:51,159 --> 00:12:53,259 si aquí hago scanner 289 00:12:53,259 --> 00:12:55,179 leer de teclado, todo junto 290 00:12:55,179 --> 00:12:56,679 es igual a new scanner 291 00:12:56,679 --> 00:12:59,720 entonces en vez de hacer scan.next 292 00:12:59,720 --> 00:13:01,940 haré leer de teclado.next 293 00:13:01,940 --> 00:13:03,320 si 294 00:13:03,320 --> 00:13:05,220 ahora lo probamos esta cosa 295 00:13:05,220 --> 00:13:06,960 y 296 00:13:06,960 --> 00:13:09,440 leo una palabra 297 00:13:09,440 --> 00:13:10,620 punto next 298 00:13:10,620 --> 00:13:13,419 leo un entero 299 00:13:13,419 --> 00:13:15,539 O sea, quiero tener un número 300 00:13:15,539 --> 00:13:18,379 Entonces lo que sale de aquí es un int 301 00:13:18,379 --> 00:13:19,980 Y lo puedo guardar en un int 302 00:13:19,980 --> 00:13:22,419 Pues uso scan.nextInt 303 00:13:22,419 --> 00:13:23,340 Fijaos 304 00:13:23,340 --> 00:13:26,580 Que esta Y mayúscula 305 00:13:26,580 --> 00:13:27,059 ¿Sí? 306 00:13:27,320 --> 00:13:30,379 Es como se usan los nombres 307 00:13:30,379 --> 00:13:32,419 Estándar en Java 308 00:13:32,419 --> 00:13:32,740 ¿Vale? 309 00:13:33,159 --> 00:13:36,279 Next es una palabra, empieza int que es otra palabra 310 00:13:36,279 --> 00:13:37,600 Pues pongo la I mayúscula 311 00:13:37,600 --> 00:13:40,279 ¿Sí? No es nextLNT 312 00:13:40,799 --> 00:13:42,279 Es una I mayúscula 313 00:13:42,279 --> 00:13:45,139 que quiero leer 314 00:13:45,139 --> 00:13:46,980 un double 315 00:13:46,980 --> 00:13:48,679 pues hago 316 00:13:48,679 --> 00:13:51,539 scan.nextdouble 317 00:13:51,539 --> 00:13:55,200 y con esto suficiente para nosotros 318 00:13:55,200 --> 00:13:56,899 podemos leer palabras 319 00:13:56,899 --> 00:13:59,200 podemos leer enteros y podemos leer 320 00:13:59,200 --> 00:14:00,600 números decimales 321 00:14:00,600 --> 00:14:01,940 suficiente 322 00:14:01,940 --> 00:14:05,179 se puede hacer cosas más complejas 323 00:14:05,179 --> 00:14:06,879 si, existe un nextline 324 00:14:06,879 --> 00:14:08,940 si no me equivoco, que lee una línea entera 325 00:14:08,940 --> 00:14:10,940 y cosas así, pero como todavía 326 00:14:10,940 --> 00:14:13,039 nosotros somos a un nivel 327 00:14:13,039 --> 00:14:15,019 muy muy sencillo, pues no nos 328 00:14:15,019 --> 00:14:16,580 complicamos la vida, ¿sí? 329 00:14:17,019 --> 00:14:17,620 ¡Cuidado! 330 00:14:19,440 --> 00:14:21,080 Si me pide mi nombre 331 00:14:21,080 --> 00:14:23,320 tengo que dar una palabra 332 00:14:23,320 --> 00:14:24,700 no puedo poner 333 00:14:24,700 --> 00:14:26,419 Estefano Espacio Chiesa 334 00:14:26,419 --> 00:14:29,360 ¿vale? Si pongo espacios 335 00:14:29,360 --> 00:14:30,419 esto ya 336 00:14:30,419 --> 00:14:32,980 funciona, ¿eh? Pero funciona de una forma 337 00:14:32,980 --> 00:14:34,720 distinta, por lo tanto no lo hagáis 338 00:14:34,720 --> 00:14:37,279 podéis pedir una palabra 339 00:14:37,279 --> 00:14:38,860 un entero 340 00:14:38,860 --> 00:14:41,279 o un double, si tengo que pedir 341 00:14:41,279 --> 00:14:43,519 cinco palabras, las pido 342 00:14:43,519 --> 00:14:45,720 de una en una, dame tu nombre 343 00:14:45,720 --> 00:14:47,539 dame tu apellido, dame tu segundo 344 00:14:47,539 --> 00:14:49,399 apellido, y por cada una de esas 345 00:14:49,399 --> 00:14:50,519 haré una next 346 00:14:50,519 --> 00:14:53,740 ¿entiendes? 347 00:14:55,379 --> 00:14:56,940 vale, vamos a probarlo, ¿no? 348 00:14:59,649 --> 00:15:01,090 entonces, para probarlo 349 00:15:01,090 --> 00:15:02,730 me hago otro ejercicio 350 00:15:02,730 --> 00:15:08,440 que llamaré 351 00:15:08,440 --> 00:15:09,399 prueba 352 00:15:09,399 --> 00:15:11,179 entrada 353 00:15:11,179 --> 00:15:17,519 y aquí tengo 354 00:15:17,519 --> 00:15:19,539 Mi main, hemos dicho que 355 00:15:19,539 --> 00:15:21,419 Lo que necesito 356 00:15:21,419 --> 00:15:23,559 Es este 357 00:15:23,559 --> 00:15:25,600 Scanner 358 00:15:25,600 --> 00:15:27,460 Nombre de la variable 359 00:15:27,460 --> 00:15:29,399 Normalmente usaréis scan 360 00:15:29,399 --> 00:15:31,419 Es igual a 361 00:15:31,419 --> 00:15:32,700 New scanner 362 00:15:32,700 --> 00:15:34,240 De system 363 00:15:34,240 --> 00:15:37,039 Punto i 364 00:15:37,039 --> 00:15:39,500 Fijaos 365 00:15:39,500 --> 00:15:40,259 Que se enfada 366 00:15:40,259 --> 00:15:43,399 ¿Vale? Porque me dice 367 00:15:43,399 --> 00:15:45,679 Oye, esta cosa scanner de aquí 368 00:15:45,679 --> 00:15:49,019 No la puedo resolver 369 00:15:49,019 --> 00:15:51,279 Tú me la estás usando como tipo 370 00:15:51,279 --> 00:15:54,179 Pero yo no soy capaz 371 00:15:54,179 --> 00:15:56,299 De entender que es este tipo 372 00:15:56,299 --> 00:15:56,960 ¿Vale? 373 00:15:57,320 --> 00:15:59,159 ¿Por qué sabe que la está usando como tipo? 374 00:15:59,539 --> 00:16:02,120 Porque aquí es la declaración de una variable 375 00:16:02,120 --> 00:16:04,240 Y es tipo, nombre, valor 376 00:16:04,240 --> 00:16:05,500 ¿Sí? 377 00:16:06,379 --> 00:16:08,179 Pues entonces, ¿qué es este escándalo? 378 00:16:08,320 --> 00:16:08,919 No lo sé 379 00:16:08,919 --> 00:16:12,519 Fijaos que entre las varias opciones 380 00:16:12,519 --> 00:16:14,500 Que os da para solucionar esto 381 00:16:14,500 --> 00:16:17,659 Esta crea una clase 382 00:16:17,659 --> 00:16:18,480 Scanner 383 00:16:18,480 --> 00:16:20,919 Crea un enumscanner 384 00:16:20,919 --> 00:16:23,559 Crea cosas raras escanner 385 00:16:23,559 --> 00:16:25,720 O importa 386 00:16:25,720 --> 00:16:27,940 El escanner 387 00:16:27,940 --> 00:16:29,480 Que está definido 388 00:16:29,480 --> 00:16:30,820 En java.util 389 00:16:30,820 --> 00:16:34,480 ¿Qué es lo que quiero hacer yo? 390 00:16:35,899 --> 00:16:36,539 Entonces 391 00:16:36,539 --> 00:16:38,279 O lo escribo a mano 392 00:16:38,279 --> 00:16:40,259 O pincho aquí 393 00:16:40,259 --> 00:16:42,559 ¿Vale? 394 00:16:42,879 --> 00:16:44,179 Vamos a escribirlo a mano 395 00:16:44,179 --> 00:16:48,019 Antes de public class 396 00:16:48,019 --> 00:16:49,700 Aquí arriba del todo 397 00:16:49,700 --> 00:16:51,419 Voy a poner 398 00:16:51,419 --> 00:16:52,639 Import 399 00:16:52,639 --> 00:16:56,139 Java.util 400 00:16:56,139 --> 00:16:57,519 Punto 401 00:16:57,519 --> 00:16:59,500 Y si os fijáis 402 00:16:59,500 --> 00:17:01,919 Aquí me viene una lista de mogollón 403 00:17:01,919 --> 00:17:02,659 De cosas 404 00:17:02,659 --> 00:17:06,019 Y paquetes y cosas por el estilo 405 00:17:06,019 --> 00:17:06,380 ¿Vale? 406 00:17:06,839 --> 00:17:08,460 Si yo pongo asterisco 407 00:17:08,460 --> 00:17:11,680 Importo 408 00:17:11,680 --> 00:17:13,279 Todo lo que está 409 00:17:13,279 --> 00:17:15,220 Dentro de java.util 410 00:17:15,220 --> 00:17:19,039 Java.util es un paquete 411 00:17:19,039 --> 00:17:21,759 Una librería externa 412 00:17:21,759 --> 00:17:23,519 Con clases 413 00:17:23,519 --> 00:17:24,319 Y cosas por el estilo 414 00:17:24,319 --> 00:17:26,220 Y yo todo lo que hay allí dentro 415 00:17:26,220 --> 00:17:27,819 Lo importo en mi programa 416 00:17:27,819 --> 00:17:29,740 ¿Esto es eficiente? 417 00:17:33,140 --> 00:17:35,279 No, porque yo voy a usar solo scanner 418 00:17:35,279 --> 00:17:37,640 Y estoy importando un mogollón de cosas 419 00:17:37,640 --> 00:17:39,460 ¿Si? 420 00:17:39,779 --> 00:17:41,039 Pero si no me acuerdo 421 00:17:41,039 --> 00:17:42,599 Como ahora estamos aprendiendo 422 00:17:42,599 --> 00:17:43,380 Puede hacerlo así 423 00:17:43,380 --> 00:17:46,339 Para hacerlo bien, como voy a necesitar 424 00:17:46,339 --> 00:17:48,299 Scanner, aquí podría poner 425 00:17:48,299 --> 00:17:48,880 Scanner 426 00:17:48,880 --> 00:17:51,259 Impórtame solo 427 00:17:51,259 --> 00:17:53,339 La que voy a utilizar 428 00:17:53,339 --> 00:17:55,900 Entonces no me está importando 429 00:17:55,900 --> 00:17:57,980 Todo lo que está en el paquete 430 00:17:57,980 --> 00:17:59,960 Java.util, me está importando solo 431 00:17:59,960 --> 00:18:01,460 La clase que voy a utilizar 432 00:18:01,460 --> 00:18:04,319 Pero que no me acuerdo o que no lo entiendo 433 00:18:04,319 --> 00:18:06,400 Porque todavía es pronto, pues pongo asterisco 434 00:18:06,400 --> 00:18:07,940 Y ya está, fijaos que 435 00:18:07,940 --> 00:18:09,559 En un caso o en el otro 436 00:18:09,559 --> 00:18:11,380 Ya no me da error aquí 437 00:18:11,380 --> 00:18:12,440 Ahora dice 438 00:18:12,440 --> 00:18:15,640 Tú quieres usar 439 00:18:15,640 --> 00:18:17,259 Scanner aquí, vale 440 00:18:17,259 --> 00:18:19,279 Y has importado este 441 00:18:19,279 --> 00:18:21,359 Scanner, entonces ese es el que quieres 442 00:18:21,359 --> 00:18:22,799 Usar, vale, fenomenal 443 00:18:22,799 --> 00:18:25,119 ¿Sí? Entonces 444 00:18:25,119 --> 00:18:26,960 Hasta si no los entiendo 445 00:18:26,960 --> 00:18:29,099 Porque hasta que no llego a los 446 00:18:29,099 --> 00:18:31,180 Objetos, estas cosas son 447 00:18:31,180 --> 00:18:31,579 Un poco 448 00:18:31,579 --> 00:18:34,980 Complejas de entender, pues 449 00:18:34,980 --> 00:18:36,720 Estas dos líneas 450 00:18:36,720 --> 00:18:38,619 Son la base para poder 451 00:18:38,619 --> 00:18:40,299 Empezar a 452 00:18:40,299 --> 00:18:44,839 Para configurar la posibilidad de leer de teclado 453 00:18:44,839 --> 00:18:46,720 Si no tengo estas dos cosas 454 00:18:46,720 --> 00:18:48,019 No puedo leer de teclado 455 00:18:48,019 --> 00:18:49,200 Pero todavía no lo he leído 456 00:18:49,200 --> 00:18:53,890 ¿Dudas? 457 00:18:57,680 --> 00:18:57,920 Vale 458 00:18:57,920 --> 00:19:00,980 Entonces, con esto he activado la posibilidad de leer 459 00:19:00,980 --> 00:19:01,819 ¿Cómo leo? 460 00:19:02,440 --> 00:19:03,420 Pues vamos a leer 461 00:19:03,420 --> 00:19:06,700 Y digo 462 00:19:06,700 --> 00:19:09,059 Leemos una palabra 463 00:19:09,059 --> 00:19:10,160 String 464 00:19:10,160 --> 00:19:12,460 Nombre 465 00:19:12,460 --> 00:19:14,259 Es igual a 466 00:19:14,259 --> 00:19:17,180 scan.next 467 00:19:17,180 --> 00:19:22,940 y luego me escribo 468 00:19:22,940 --> 00:19:30,859 system.out.println 469 00:19:30,859 --> 00:19:33,480 y me saludo 470 00:19:33,480 --> 00:19:35,859 hola 471 00:19:35,859 --> 00:19:38,019 más nombre 472 00:19:38,019 --> 00:19:42,880 ¿os acordáis? antes que hacía yo 473 00:19:42,880 --> 00:19:45,259 yo aquí me creaba string nombre 474 00:19:45,259 --> 00:19:46,119 y decía Estefano 475 00:19:46,119 --> 00:19:48,759 entonces ahora me decía hola Estefano 476 00:19:48,759 --> 00:19:53,819 Vale, hola Stefano 477 00:19:53,819 --> 00:19:56,140 Pero si quería cambiar el nombre 478 00:19:56,140 --> 00:19:57,539 A otro nombre 479 00:19:57,539 --> 00:20:00,539 Pues tenía que entrar dentro del código 480 00:20:00,539 --> 00:20:01,680 Tenía que ser un programador 481 00:20:01,680 --> 00:20:03,500 Tener el eclipse, entrar dentro 482 00:20:03,500 --> 00:20:04,619 Cambiar el nombre 483 00:20:04,619 --> 00:20:07,220 Y volver a recompilar todo 484 00:20:07,220 --> 00:20:09,000 Guardar, recompilar 485 00:20:09,000 --> 00:20:10,960 Pues no, yo eso no lo quiero hacer 486 00:20:10,960 --> 00:20:13,559 Entonces, aquí tengo mi programa 487 00:20:13,559 --> 00:20:14,920 Lo lanzo 488 00:20:14,920 --> 00:20:16,900 Y mi programa lo que hace es 489 00:20:16,900 --> 00:20:18,039 Nada 490 00:20:18,039 --> 00:20:22,359 Pero 491 00:20:22,359 --> 00:20:25,099 Mirad esto 492 00:20:25,099 --> 00:20:28,000 Chan chan 493 00:20:28,000 --> 00:20:30,000 Chan chan 494 00:20:30,000 --> 00:20:33,279 ¿Sabéis que es esto? 495 00:20:35,779 --> 00:20:37,980 Quiere decir que mi programa 496 00:20:37,980 --> 00:20:39,440 No ha acabado 497 00:20:39,440 --> 00:20:41,519 Sigue allí funcionando 498 00:20:41,519 --> 00:20:44,059 Mi programa ha arrancado 499 00:20:44,059 --> 00:20:46,480 Y está allí a la espera 500 00:20:46,480 --> 00:20:47,700 Es bloqueado 501 00:20:47,700 --> 00:20:49,799 Esperando a que funcione 502 00:20:49,799 --> 00:20:51,660 Cualquier otro programa 503 00:20:51,660 --> 00:20:52,980 Que vosotros habéis lanzado 504 00:20:52,980 --> 00:20:55,240 Este de aquí se vuelve rojo un átimo 505 00:20:55,240 --> 00:20:56,359 Y luego se vuelve gris 506 00:20:56,359 --> 00:20:59,059 Porque cuando acaba, esto se acaba 507 00:20:59,059 --> 00:21:01,059 Y de hecho, si yo tengo problemas 508 00:21:01,059 --> 00:21:03,759 Y quiero terminar un programa 509 00:21:03,759 --> 00:21:04,839 Que se está ejecutando 510 00:21:04,839 --> 00:21:06,099 Pinchando aquí 511 00:21:06,099 --> 00:21:08,559 Lo mato, lo termino 512 00:21:08,559 --> 00:21:09,940 ¿Vale? 513 00:21:10,180 --> 00:21:11,799 Pero el hecho que esto esté rojo 514 00:21:11,799 --> 00:21:14,099 Quiere decir que este programa no ha acabado 515 00:21:14,099 --> 00:21:15,240 ¿Dónde está este programa? 516 00:21:16,319 --> 00:21:16,920 Está aquí 517 00:21:16,920 --> 00:21:20,589 Está a la espera 518 00:21:20,589 --> 00:21:23,089 De que yo le escriba algo 519 00:21:23,089 --> 00:21:25,910 Entonces le escribo algo 520 00:21:25,910 --> 00:21:26,930 Estefano 521 00:21:26,930 --> 00:21:30,039 Intro 522 00:21:30,039 --> 00:21:32,680 Y él me dice, hola Estefano 523 00:21:32,680 --> 00:21:34,920 Y ahora sí que ha terminado 524 00:21:34,920 --> 00:21:38,640 ¿Y por qué esto? 525 00:21:38,900 --> 00:21:41,160 Porque yo no le he dicho en ningún momento 526 00:21:41,160 --> 00:21:43,460 Oye, dirá al usuario 527 00:21:43,460 --> 00:21:44,460 Que tiene que hacer 528 00:21:44,460 --> 00:21:46,460 Entonces, acordaos que 529 00:21:46,460 --> 00:21:50,319 Antes de hacer un scan.next algo 530 00:21:50,319 --> 00:21:53,200 Siempre hay que decir al usuario 531 00:21:53,200 --> 00:21:55,500 Que te esperes que haga el usuario 532 00:21:55,500 --> 00:21:57,779 Porque si vosotros arrancáis un programa 533 00:21:57,779 --> 00:21:59,000 Y veis una pantalla en blanco 534 00:21:59,000 --> 00:22:00,779 Estáis allí y miráis y no os dice nada 535 00:22:00,779 --> 00:22:02,480 Pues no sabéis que tenéis que hacer 536 00:22:02,480 --> 00:22:05,660 Entonces vamos a ponerle antes 537 00:22:05,660 --> 00:22:09,380 Hola 538 00:22:09,380 --> 00:22:11,799 Usuario 539 00:22:11,799 --> 00:22:15,079 Dime tu nombre 540 00:22:15,079 --> 00:22:17,200 Escribe 541 00:22:17,200 --> 00:22:20,799 Escribe tu nombre 542 00:22:20,799 --> 00:22:27,069 Entonces ahora lo ejecuto 543 00:22:27,069 --> 00:22:28,829 Y ahora me dice 544 00:22:28,829 --> 00:22:30,569 Hola usuario, escribe tu nombre 545 00:22:30,569 --> 00:22:32,009 Y ahora ya sé que tengo que hacer 546 00:22:32,009 --> 00:22:33,369 Este está parado 547 00:22:33,369 --> 00:22:36,349 Y estará a la espera que yo escriba mi nombre 548 00:22:36,349 --> 00:22:38,150 Y pongo ahora 549 00:22:38,150 --> 00:22:38,970 Sara 550 00:22:38,970 --> 00:22:41,450 Y me dice, hola Sara 551 00:22:41,450 --> 00:22:46,549 Fijaos, vuelvo a ejecutarlo 552 00:22:46,549 --> 00:22:48,109 Sin tocar el código 553 00:22:48,109 --> 00:22:49,650 Y sin compilarlo 554 00:22:49,650 --> 00:22:50,730 Lo re ejecuto 555 00:22:50,730 --> 00:22:53,869 Y ahora le digo que me llamo Antonio 556 00:22:53,869 --> 00:22:56,309 y me dice, hola Antonio 557 00:22:56,309 --> 00:23:01,440 ¿entendéis la diferencia 558 00:23:01,440 --> 00:23:04,079 entre lo que había 559 00:23:04,079 --> 00:23:06,000 antes y lo que 560 00:23:06,000 --> 00:23:07,200 está pasando ahora? 561 00:23:07,660 --> 00:23:09,579 que antes mi programa valía 562 00:23:09,579 --> 00:23:10,779 solo para un nombre 563 00:23:10,779 --> 00:23:13,099 y ahora he hecho un programa 564 00:23:13,099 --> 00:23:15,480 abstracto que vale para 565 00:23:15,480 --> 00:23:17,240 cualquier nombre del multiverso 566 00:23:17,240 --> 00:23:20,200 y eso no es poco 567 00:23:20,200 --> 00:23:23,839 diga 568 00:23:23,839 --> 00:23:39,529 este último proceso cual lo escrito aquí esto y ha escrito escribe o los 569 00:23:39,529 --> 00:23:43,690 aires entonces él me escribirá esto y donde se bloquea donde es que el 570 00:23:43,690 --> 00:23:48,230 programa se bloquea la espera de un input del usuario en esta línea de aquí 571 00:23:48,230 --> 00:23:53,170 entonces todo lo que viene antes de esta línea es lo ejecutará ello le echó 572 00:23:53,170 --> 00:23:58,150 escribe oye mira hola dame tu nombre que así el usuario cuando se bloquea el 573 00:23:58,150 --> 00:24:02,049 programa sabe que tiene que hacer si al usuario no le he dicho escribe tu nombre 574 00:24:02,049 --> 00:24:06,509 que sabe él si tiene que poner una password tiene que poner su nombre su 575 00:24:06,509 --> 00:24:12,329 edad o lo que sea 576 00:24:12,970 --> 00:24:20,730 entonces sigamos con nuestro programa he leído un nombre lo he saludado que ahora 577 00:24:20,730 --> 00:24:25,549 le puedo decir oye dime dame tu edad y te digo cuántos años ha vivido no por 578 00:24:25,549 --> 00:24:57,210 ejemplo entonces le digo si escribe tu edad y te diré cuántos días has vivido y que ahora 579 00:24:57,210 --> 00:25:15,009 Si pongo string edad 580 00:25:15,009 --> 00:25:15,829 ¿De qué problema tengo? 581 00:25:17,250 --> 00:25:19,470 Que luego tengo que hacer edad por 365 582 00:25:19,470 --> 00:25:20,430 ¿Cómo lo hago? 583 00:25:20,750 --> 00:25:23,190 Un nombre, una palabra por 365 584 00:25:23,190 --> 00:25:28,339 Int 585 00:25:28,339 --> 00:25:29,920 Edad 586 00:25:29,920 --> 00:25:31,400 Es igual a qué? 587 00:25:32,539 --> 00:25:33,019 Scan 588 00:25:33,019 --> 00:25:35,319 Punto 589 00:25:35,319 --> 00:25:38,799 Fijaos que aquí me vienen las opciones 590 00:25:38,799 --> 00:25:39,980 Que tengo con scan 591 00:25:39,980 --> 00:25:43,180 Cuando pongo scan punto 592 00:25:43,180 --> 00:25:44,220 Me dice que quieres 593 00:25:44,220 --> 00:25:47,380 Next int, next byte, next short 594 00:25:47,380 --> 00:25:49,960 Find all, find in line 595 00:25:49,960 --> 00:25:51,920 As next, as long 596 00:25:51,920 --> 00:25:54,339 Todos los métodos que puedo utilizar 597 00:25:54,339 --> 00:25:55,299 Con esta cosa 598 00:25:55,299 --> 00:25:57,400 Pero bueno, a mi me interesa 599 00:25:57,400 --> 00:25:58,980 Next int 600 00:25:58,980 --> 00:26:02,819 Y ahora que hago 601 00:26:02,819 --> 00:26:08,440 Como 602 00:26:08,440 --> 00:26:15,259 De string a int 603 00:26:15,259 --> 00:26:17,299 Más complejo de lo que parece 604 00:26:17,299 --> 00:26:20,019 No es tan fácil 605 00:26:20,019 --> 00:26:21,819 Porque 606 00:26:21,819 --> 00:26:23,440 ¿Qué es string? 607 00:26:24,740 --> 00:26:26,960 String es una concatenación de char 608 00:26:26,960 --> 00:26:28,940 Entonces lo que irá 609 00:26:28,940 --> 00:26:31,240 Si tú le dices trártalo como int 610 00:26:31,240 --> 00:26:32,920 Te pillará la char 611 00:26:32,920 --> 00:26:34,940 El valor que tiene 612 00:26:34,940 --> 00:26:36,119 Y te dice ese es su número 613 00:26:36,119 --> 00:26:38,380 El número 1 no corresponde al valor 1 614 00:26:38,380 --> 00:26:39,279 Como char 615 00:26:39,279 --> 00:26:40,660 Corresponde al valor 36 616 00:26:40,660 --> 00:26:41,640 Entonces explota 617 00:26:41,640 --> 00:26:45,099 No, hacemos con el siguiente que es más fácil 618 00:26:45,099 --> 00:26:45,660 Y digo 619 00:26:45,660 --> 00:26:48,640 Has vivido 620 00:26:48,640 --> 00:26:50,779 Más 621 00:26:50,779 --> 00:26:54,930 ¿Cómo lo he llamado? 622 00:26:55,069 --> 00:26:55,329 Edad 623 00:26:55,329 --> 00:26:58,869 Edad por 365 624 00:26:58,869 --> 00:27:01,089 Más 625 00:27:01,089 --> 00:27:04,529 Días 626 00:27:04,529 --> 00:27:10,490 Fijaos 627 00:27:10,490 --> 00:27:13,990 ¿Sé yo la edad del usuario? 628 00:27:14,990 --> 00:27:17,950 ¿Por algún lado alguien me ha dicho cuánto vale esta edad? 629 00:27:18,809 --> 00:27:19,089 No 630 00:27:19,089 --> 00:27:20,490 ¿Cuándo lo sabré? 631 00:27:20,490 --> 00:27:22,849 En tiempo de ejecución 632 00:27:22,849 --> 00:27:28,680 Es cuando ejecuto el programa 633 00:27:28,680 --> 00:27:30,700 Que el programa se parará 634 00:27:30,700 --> 00:27:31,359 Aquí 635 00:27:31,359 --> 00:27:34,720 A la espera que el usuario me ponga un dato 636 00:27:34,720 --> 00:27:36,599 Y yo usaré ese dato 637 00:27:36,599 --> 00:27:38,259 Para hacer este cálculo 638 00:27:38,259 --> 00:27:42,769 Vamos a ver cómo funciona 639 00:27:42,769 --> 00:27:43,750 Luego volvemos aquí 640 00:27:43,750 --> 00:27:45,369 Play 641 00:27:45,369 --> 00:27:48,069 ¿Cómo te llamas? 642 00:27:48,970 --> 00:27:49,609 Estefano 643 00:27:49,609 --> 00:27:54,069 Escribe tu edad 644 00:27:54,069 --> 00:27:56,390 Y te diré cuántos días has vivido 645 00:27:56,390 --> 00:27:57,710 Vale, 41 646 00:27:57,710 --> 00:28:00,029 Has vivido 647 00:28:00,029 --> 00:28:03,339 Si 648 00:28:03,339 --> 00:28:07,740 Y fijaos que este dato 649 00:28:07,740 --> 00:28:08,640 Si este dato 650 00:28:08,640 --> 00:28:11,000 Hasta que no lo ha escrito 651 00:28:11,000 --> 00:28:12,420 El no lo sabía 652 00:28:12,420 --> 00:28:14,460 Lo va utilizando 653 00:28:14,460 --> 00:28:16,920 Pero el no lo ha sabido 654 00:28:16,920 --> 00:28:18,400 Hasta que el usuario lo ha puesto 655 00:28:18,400 --> 00:28:19,440 Es una cosa importante 656 00:28:19,440 --> 00:28:21,539 Porque esto me permite 657 00:28:21,539 --> 00:28:23,440 Extraer mucho 658 00:28:23,440 --> 00:28:25,319 Aumentar muchísimo 659 00:28:25,319 --> 00:28:28,220 El rango de problemas que puedo solucionar 660 00:28:28,220 --> 00:28:30,519 Antes podía solucionar un problema solo 661 00:28:30,519 --> 00:28:33,039 El señor Estefano con 41 años 662 00:28:33,039 --> 00:28:36,279 Ahora puede solucionar cualquier problema 663 00:28:36,279 --> 00:28:38,200 De cualquier usuario 664 00:28:38,200 --> 00:28:39,480 Cualquier nombre de usuario 665 00:28:39,480 --> 00:28:41,160 Cualquier edad 666 00:28:41,160 --> 00:28:42,980 Eso es mucho 667 00:28:42,980 --> 00:28:45,240 Un buen salto 668 00:28:45,240 --> 00:28:57,339 ¿Dudas? 669 00:29:16,299 --> 00:29:17,200 Resource leak 670 00:29:17,200 --> 00:29:18,640 Scan is never closed 671 00:29:18,640 --> 00:29:25,019 Scan punto close 672 00:29:25,019 --> 00:29:50,779 sabemos que es no fuera el campo punto cloud dudas los recursos que yo uso normalmente los 673 00:29:50,779 --> 00:29:59,420 creo los uso y cuando ya no los uso los tengo que cerrar o destruir en java existe una cosa 674 00:29:59,420 --> 00:30:05,200 se llama el java garbage collector por garbage collector que es sustancialmente que todas las 675 00:30:05,200 --> 00:30:11,680 cosas que no se usan pasa el en automático en libera memoria para que no 676 00:30:11,680 --> 00:30:16,779 se quedan allí recursos utilizados que luego no se utiliza vale es lo que me 677 00:30:16,779 --> 00:30:20,519 está diciendo aquí me dice oye mira tú has creado este objeto si no lo cierras 678 00:30:20,519 --> 00:30:28,859 este objeto se queda y abierto y gasta recursos y para que vale entonces 679 00:30:28,859 --> 00:30:33,819 dice por algún lado deberías marcar que ya no lo necesito más para que el 680 00:30:33,819 --> 00:30:39,039 garbage collector pueda pasar pero como nuestro programa luego acaba cuando 681 00:30:39,039 --> 00:30:42,519 acaba limpia todo entonces no hay problema si esto fuera un programa que 682 00:30:42,519 --> 00:30:46,640 después de haber hecho esto hiciera otra cosa y se queda aquí un año trabajando 683 00:30:46,640 --> 00:30:50,920 haber dejado abierto esto sin haberlo utilizado nunca jamás me ha creado un 684 00:30:50,920 --> 00:31:00,359 memory link un uso de memoria impropio dudas 685 00:31:04,619 --> 00:31:15,410 vale veamos si lo puesto lo que pasa es yo le doy aquí como te llamas stefano 686 00:31:15,410 --> 00:31:17,250 ¿Cuál es tu edad? 687 00:31:17,910 --> 00:31:20,150 Veinte cinco 688 00:31:20,150 --> 00:31:21,829 Así, así, no sé 689 00:31:21,829 --> 00:31:23,369 ¿Mi edad? 690 00:31:23,769 --> 00:31:24,990 ¿Qué hace? 691 00:31:28,849 --> 00:31:29,769 Explosión 692 00:31:29,769 --> 00:31:32,049 Lo que se llama 693 00:31:32,049 --> 00:31:33,250 Una exception 694 00:31:33,250 --> 00:31:36,670 Input mismatch exception 695 00:31:36,670 --> 00:31:39,789 Error, digámoslo así 696 00:31:39,789 --> 00:31:43,289 De input no correspondiente 697 00:31:43,289 --> 00:31:44,509 Tú has dicho un int 698 00:31:44,509 --> 00:31:45,910 Y has puesto un string 699 00:31:45,910 --> 00:31:46,750 Exploto 700 00:31:46,750 --> 00:31:53,000 String 701 00:31:53,000 --> 00:31:58,630 ¿Dudas? 702 00:32:00,150 --> 00:32:01,509 A mí no me sale eso 703 00:32:01,509 --> 00:32:04,390 Vale, entonces, esperad un segundo 704 00:32:04,390 --> 00:32:06,910 Hagamos una pausa