1 00:00:00,560 --> 00:00:16,059 Venga, vamos a seguir, ya solo para que podamos hacer algunos ejercicios para poner en práctica algunas cosas más, ya solo para eso vamos a ampliar las opciones de lectura de teclado que hasta ahora mismo hemos leído numeritos y ya está. 2 00:00:16,460 --> 00:00:28,960 Vamos a ampliar las opciones de lectura de teclado para leer cadenas también y trabajar un poquito más con las cadenas de texto, porque eso nos abre el poder incorporar algunas cosas más en nuestros ejercicios. 3 00:00:28,960 --> 00:00:32,079 vale, vamos simplemente a incorporar eso 4 00:00:32,079 --> 00:00:33,960 de cara a poder abrir un poco 5 00:00:33,960 --> 00:00:35,859 el abanico de ejercicios que podemos hacer 6 00:00:35,859 --> 00:00:37,219 y datos de entrada que podemos utilizar 7 00:00:37,219 --> 00:00:39,240 vale 8 00:00:39,240 --> 00:00:42,280 vale, bueno, recordad 9 00:00:42,280 --> 00:00:43,840 que los tipos de datos que hemos visto 10 00:00:43,840 --> 00:00:46,439 los que llamamos primitivos 11 00:00:46,439 --> 00:00:48,359 números 12 00:00:48,359 --> 00:00:50,880 enteros y decimales 13 00:00:50,880 --> 00:00:52,079 boolean y char 14 00:00:52,079 --> 00:00:54,140 vale, ya sabemos lo que implica 15 00:00:54,140 --> 00:00:55,619 declararlos, cuando los declaramos 16 00:00:55,619 --> 00:00:57,520 aparecen automáticamente en memoria y ya está 17 00:00:57,520 --> 00:00:59,820 aparte de esos tipos 18 00:00:59,820 --> 00:01:00,500 primitivos 19 00:01:00,500 --> 00:01:03,219 para guardar 20 00:01:03,219 --> 00:01:05,319 cadenas enteras de caracteres 21 00:01:05,319 --> 00:01:08,040 que se usa mucho, una cadena entera de caracteres 22 00:01:08,040 --> 00:01:09,400 no un carácter suelto, uno por uno 23 00:01:09,400 --> 00:01:11,819 teníamos un tipo adicional 24 00:01:11,819 --> 00:01:13,180 que hemos mencionado 25 00:01:13,180 --> 00:01:14,799 que es este, vale 26 00:01:14,799 --> 00:01:17,780 entonces este tipo es un tipo 27 00:01:17,780 --> 00:01:19,500 especial, ay perdón 28 00:01:19,500 --> 00:01:20,359 perdón, perdón 29 00:01:20,359 --> 00:01:25,379 vale, o sea, este tipo es un tipo especial 30 00:01:25,379 --> 00:01:28,780 vale, entonces 31 00:01:28,780 --> 00:01:34,129 no es un tipo primitivo 32 00:01:34,129 --> 00:01:35,930 es un tipo objeto que todavía no sabemos 33 00:01:35,930 --> 00:01:38,010 las implicaciones que tiene, pero bueno, lo hace un poquito 34 00:01:38,010 --> 00:01:39,709 especial, ¿vale? 35 00:01:39,750 --> 00:01:41,810 pero lo podemos usar hasta ahora 36 00:01:41,810 --> 00:01:43,750 igual que usamos los primitivos 37 00:01:43,750 --> 00:01:45,450 para guardar cadenas de caracteres 38 00:01:45,450 --> 00:01:47,590 ¿vale? por ejemplo 39 00:01:47,590 --> 00:01:49,790 ya lo hemos hecho a veces, que yo quiero asignar una cadena 40 00:01:49,790 --> 00:01:50,349 cualquiera 41 00:01:50,349 --> 00:01:53,049 pues le asigno una cadena cualquiera 42 00:01:53,049 --> 00:01:55,189 entre comillada a comillas dobles 43 00:01:55,189 --> 00:01:57,250 es lo que hemos hecho hasta ahora, ¿vale? 44 00:01:57,269 --> 00:01:58,969 podemos guardar cadenas de caracteres ahí 45 00:01:58,969 --> 00:02:02,109 y podemos concatenarlas entre sí con el operador más 46 00:02:02,109 --> 00:02:06,150 con la salvedad que tenemos que tener todos también en la memoria 47 00:02:06,150 --> 00:02:10,509 que si concatenamos una cadena con cualquier dato primitivo que no sea cadena 48 00:02:10,509 --> 00:02:14,590 automáticamente el dato primitivo que no es cadena 49 00:02:14,590 --> 00:02:19,009 se convierte a cadena de caracteres para ser concatenado 50 00:02:19,009 --> 00:02:20,750 y el resultado final es cadena de caracteres 51 00:02:20,750 --> 00:02:22,729 bueno, todo eso es lo que hemos visto de cadenas, nada más 52 00:02:22,729 --> 00:02:24,509 vale, entonces 53 00:02:24,509 --> 00:02:27,469 que queremos recibir cadenas 54 00:02:27,469 --> 00:02:29,169 como datos de entrada 55 00:02:29,169 --> 00:02:30,909 igual que hemos recibido números hasta ahora 56 00:02:30,909 --> 00:02:32,210 con next in, next double 57 00:02:32,210 --> 00:02:35,030 vale, pues también podemos leerlas con el escáner 58 00:02:35,030 --> 00:02:36,770 y así podemos ya hacer ejercicios 59 00:02:36,770 --> 00:02:39,509 que reciban como datos de entrada cadenas 60 00:02:39,509 --> 00:02:42,650 vale, pues por ejemplo 61 00:02:42,650 --> 00:02:45,650 en lugar de asignar la cadena directamente por código 62 00:02:45,650 --> 00:02:47,550 vamos a leer 63 00:02:47,550 --> 00:02:51,270 una cadena de texto por teclado 64 00:02:51,270 --> 00:02:54,250 el objeto este 65 00:02:54,250 --> 00:02:56,050 hay que ponerle igualmente 66 00:02:56,050 --> 00:03:07,939 bueno y ahora 67 00:03:07,939 --> 00:03:10,680 como leemos con este objeto 68 00:03:10,680 --> 00:03:11,800 pues igual que teníamos 69 00:03:11,800 --> 00:03:14,419 la llamada a punto next in 70 00:03:14,419 --> 00:03:16,139 para leer un entero del teclado 71 00:03:16,139 --> 00:03:17,300 y guardarlo en la variable 72 00:03:17,300 --> 00:03:20,400 pues tenemos una llamada 73 00:03:20,400 --> 00:03:22,039 que es esta 74 00:03:22,039 --> 00:03:23,020 next line 75 00:03:23,020 --> 00:03:25,860 es esta entonces next line 76 00:03:25,860 --> 00:03:27,599 se queda esperando 77 00:03:27,599 --> 00:03:29,060 se queda esperando 78 00:03:29,060 --> 00:03:30,699 A que tú metas texto 79 00:03:30,699 --> 00:03:33,379 Y cuando le das a enter 80 00:03:33,379 --> 00:03:34,879 En el momento de dar a enter 81 00:03:34,879 --> 00:03:37,780 Él coge todos los caracteres 82 00:03:37,780 --> 00:03:39,759 Que hayas metido, todos, da igual los que sean 83 00:03:39,759 --> 00:03:40,479 Los coge todos 84 00:03:40,479 --> 00:03:42,479 Y los guarda en la cadena de texto 85 00:03:42,479 --> 00:03:43,699 ¿Verdad? 86 00:03:57,680 --> 00:03:59,060 ¿Vale? O sea, si hacemos esto 87 00:03:59,060 --> 00:04:01,960 El programa se quedará esperando aquí parado 88 00:04:01,960 --> 00:04:03,740 Meteremos una cadena 89 00:04:03,740 --> 00:04:05,360 Una vez que le hemos dado al enter 90 00:04:05,360 --> 00:04:08,159 Pues ya saltará esta sentencia 91 00:04:08,159 --> 00:04:09,460 Y nos dirá si ha introducido 92 00:04:09,460 --> 00:04:11,000 Y aquí pondrá lo que ya hemos introducido 93 00:04:11,000 --> 00:04:12,159 bueno 94 00:04:12,159 --> 00:04:15,479 pues nada, ejecutamos esto 95 00:04:15,479 --> 00:04:20,350 y ahí está esperando 96 00:04:20,350 --> 00:04:21,569 efectivamente, ahí está esperando 97 00:04:21,569 --> 00:04:23,910 ahí está parado, porque el next line fuerza 98 00:04:23,910 --> 00:04:24,970 la parada del programa 99 00:04:24,970 --> 00:04:27,750 y yo ya me pongo a escribir cosas 100 00:04:27,750 --> 00:04:29,689 lo que a mí me dé la gana, letras, números, lo que sea 101 00:04:29,689 --> 00:04:31,629 y en el momento de dar al enter, ese es el fin 102 00:04:31,629 --> 00:04:33,350 esa es la marca de 103 00:04:33,350 --> 00:04:35,490 he terminado, ya no quiero meter más 104 00:04:35,490 --> 00:04:37,329 le doy al enter y ya está 105 00:04:37,329 --> 00:04:38,810 y él coge todo eso 106 00:04:38,810 --> 00:04:41,389 lo guarda en la variable 107 00:04:41,389 --> 00:04:43,610 a la cual estamos asignando 108 00:04:43,610 --> 00:04:45,509 lo guarda en la variable 109 00:04:45,509 --> 00:04:47,670 y listo, y ahora ya me hace la siguiente 110 00:04:47,670 --> 00:04:48,269 sentencia 111 00:04:48,269 --> 00:04:53,279 bueno, en función 112 00:04:53,279 --> 00:04:55,180 de las cadenas 113 00:04:55,180 --> 00:04:57,139 también nos sirven como variables dentro del 114 00:04:57,139 --> 00:04:57,779 switch case 115 00:04:57,779 --> 00:05:01,259 por ejemplo yo podría hacer 116 00:05:01,259 --> 00:05:13,379 esto, por ejemplo 117 00:05:13,379 --> 00:05:15,019 si la cadena tiene hola 118 00:05:15,019 --> 00:05:16,500 pues entonces puedo decir 119 00:05:16,500 --> 00:05:22,889 que me conteste 120 00:05:22,889 --> 00:05:27,459 si la cadena tiene 121 00:05:27,459 --> 00:05:29,560 Adiós 122 00:05:29,560 --> 00:05:32,579 No voy a poner tildes 123 00:05:32,579 --> 00:05:35,620 Pues hala 124 00:05:35,620 --> 00:05:38,360 Pues que me conteste 125 00:05:38,360 --> 00:05:40,500 Que tiene cualquier otra 126 00:05:40,500 --> 00:05:42,279 Break, me lo he saltado 127 00:05:42,279 --> 00:05:59,680 Que tiene cualquier otra cosa 128 00:05:59,680 --> 00:06:01,839 Que no es ni hola ni adiós 129 00:06:01,839 --> 00:06:05,209 Pues lo que sea 130 00:06:05,209 --> 00:06:11,529 ¿Vale? Es decir 131 00:06:11,529 --> 00:06:13,610 Lo que quiero ejemplificar es 132 00:06:13,610 --> 00:06:15,990 Que la variable que va dentro del switch 133 00:06:15,990 --> 00:06:18,389 la variable en función de la cual se decide 134 00:06:18,389 --> 00:06:19,870 si voy por una rama o voy por otra 135 00:06:19,870 --> 00:06:22,129 puede también ser de tipo string 136 00:06:22,129 --> 00:06:24,189 no tiene que ser obligatoriamente 137 00:06:24,189 --> 00:06:25,189 de tipo primitivo 138 00:06:25,189 --> 00:06:27,009 puede ser de tipo string 139 00:06:27,009 --> 00:06:29,009 puede ser de tipo string 140 00:06:29,009 --> 00:06:31,370 y entonces los valores que pongo en el case 141 00:06:31,370 --> 00:06:32,990 tienen que ser string 142 00:06:32,990 --> 00:06:35,750 y eso son cadenas entrecomilladas 143 00:06:35,750 --> 00:06:37,750 en el ejemplo anterior 144 00:06:37,750 --> 00:06:42,189 aquí habíamos puesto números enteros 145 00:06:42,189 --> 00:06:43,250 porque la variable nota 146 00:06:43,250 --> 00:06:45,050 era entera 147 00:06:45,050 --> 00:06:49,129 entonces habíamos puesto aquí números enteros 148 00:06:49,129 --> 00:06:52,170 si la variable nota fuera double 149 00:06:52,170 --> 00:06:55,389 pues yo aquí pondría números que puedan ser iguales a double 150 00:06:55,389 --> 00:06:58,410 1.4, lo que sea, números decimales 151 00:06:58,410 --> 00:07:02,170 pero aquí como cadena es string 152 00:07:02,170 --> 00:07:04,089 yo pongo algo que es string 153 00:07:04,089 --> 00:07:07,730 que es un texto entre comillas dobles 154 00:07:07,730 --> 00:07:11,069 si yo pusiera un texto entre comillas simples 155 00:07:11,069 --> 00:07:13,649 este se quejaría, obviamente 156 00:07:13,649 --> 00:07:15,930 Porque un texto entre comillas simples no existe 157 00:07:15,930 --> 00:07:17,550 Las comillas simples son para chat 158 00:07:17,550 --> 00:07:21,519 Bueno, pues entonces 159 00:07:21,519 --> 00:07:23,959 Este programa, vamos a suponer que le quitamos esto 160 00:07:23,959 --> 00:07:25,879 Pues ya está 161 00:07:25,879 --> 00:07:27,860 Este programa me contestará una cosa u otra 162 00:07:27,860 --> 00:07:28,920 A función de lo que yo le haya dicho 163 00:07:28,920 --> 00:07:30,339 Es lo que hará 164 00:07:30,339 --> 00:07:32,500 Si yo ejecuto este mi programa 165 00:07:32,500 --> 00:07:35,459 Le digo hola, pues hala, me contesta 166 00:07:35,459 --> 00:07:38,220 Le digo adiós 167 00:07:38,220 --> 00:07:39,860 Pues hala, me contesta 168 00:07:39,860 --> 00:07:41,620 Le digo cualquier otra cosa 169 00:07:41,620 --> 00:07:44,040 Pues no sabe 170 00:07:44,040 --> 00:07:48,779 bueno, eso por un lado 171 00:07:48,779 --> 00:07:53,600 las cadenas, por tanto, las podemos leer también por teclado 172 00:07:53,600 --> 00:07:58,220 con esta sentencia, nextline, igual que leíamos los números 173 00:07:58,220 --> 00:08:00,879 con next y nextdab, las podemos leer por teclado con nextline 174 00:08:00,879 --> 00:08:07,379 vale, siguiente cosa 175 00:08:07,379 --> 00:08:11,180 que os podéis encontrar, que os puede dar error y os podéis 176 00:08:11,180 --> 00:08:15,980 volver locos, cuando uno encadena lecturas de números 177 00:08:15,980 --> 00:08:16,720 y de cadenas 178 00:08:16,720 --> 00:08:18,720 vamos a hacerlo aquí 179 00:08:18,720 --> 00:08:21,360 ya hemos hecho esta parte del programa 180 00:08:21,360 --> 00:08:23,360 ahora vamos a pedir un número 181 00:08:23,360 --> 00:08:32,799 vamos a decirle ahora 182 00:08:32,799 --> 00:08:34,720 introduzca 183 00:08:34,720 --> 00:08:36,659 número 184 00:08:36,659 --> 00:08:38,820 y vamos a leer un numerito 185 00:08:38,820 --> 00:08:41,200 int n 186 00:08:41,200 --> 00:08:44,610 vale 187 00:08:44,610 --> 00:08:46,570 hemos leído el numerito 188 00:08:46,570 --> 00:08:48,950 hemos pedido introduzca un número, muy bien, leemos el numerito 189 00:08:48,950 --> 00:08:49,610 guardado en n 190 00:08:49,610 --> 00:08:52,330 vamos a mostrarlo para ver que lo ha hecho bien 191 00:08:52,330 --> 00:08:55,929 Ha introducido 192 00:08:55,929 --> 00:08:59,169 Quito las tildes 193 00:08:59,169 --> 00:09:01,610 El número y concatenamos 194 00:09:01,610 --> 00:09:02,570 N, vale 195 00:09:02,570 --> 00:09:05,730 Vamos a volver a 196 00:09:05,730 --> 00:09:09,230 Pedirle ahora otra cadena 197 00:09:09,230 --> 00:09:14,220 No pongo las tildes 198 00:09:14,220 --> 00:09:18,429 El nombre del tío 199 00:09:18,429 --> 00:09:19,370 Se supone que será 200 00:09:19,370 --> 00:09:22,330 Una cadena de caracteres 201 00:09:22,330 --> 00:09:23,169 Pues leemos aquí 202 00:09:23,169 --> 00:09:25,529 Scan.next 203 00:09:25,529 --> 00:09:27,190 Line 204 00:09:27,190 --> 00:09:31,120 Vale 205 00:09:31,120 --> 00:09:35,929 Y ahora vamos a poner 206 00:09:35,929 --> 00:09:40,580 Hola 207 00:09:40,580 --> 00:09:43,879 Quien sea 208 00:09:43,879 --> 00:09:45,080 Vale 209 00:09:45,080 --> 00:09:48,620 Bueno, pues este programa pide un número 210 00:09:48,620 --> 00:09:52,940 Hola, no sé qué, le vamos a poner además 211 00:09:52,940 --> 00:09:58,360 Introdujiste 212 00:09:58,360 --> 00:10:03,570 Introdujiste 213 00:10:03,570 --> 00:10:04,610 O ciste, ya ni lo sé 214 00:10:04,610 --> 00:10:07,960 ¿Es con J o con C? 215 00:10:08,720 --> 00:10:10,679 Introdujiste, introdujo, introduciste 216 00:10:10,679 --> 00:10:19,019 vale, por ejemplo 217 00:10:19,019 --> 00:10:21,100 le pide un número 218 00:10:21,100 --> 00:10:22,799 vale 219 00:10:22,799 --> 00:10:24,419 y ahora, ¿cómo te llamas? 220 00:10:25,320 --> 00:10:27,360 Pepito, hola Pepito, metiste 221 00:10:27,360 --> 00:10:28,980 7, vale 222 00:10:28,980 --> 00:10:31,259 si quisiéramos hacer eso, vete a saber por qué razón 223 00:10:31,259 --> 00:10:32,259 para 224 00:10:32,259 --> 00:10:34,840 estamos en un momento de interfaz 225 00:10:34,840 --> 00:10:37,220 de una aplicación que estamos haciendo, le estamos pidiendo datos 226 00:10:37,220 --> 00:10:38,960 le estamos realimentando 227 00:10:38,960 --> 00:10:40,899 diciendo, ah sí, te llamas tal, has metido esto 228 00:10:40,899 --> 00:10:41,879 bueno, estamos en esa fase 229 00:10:41,879 --> 00:10:44,279 pues venga, vamos a ejecutar esto 230 00:10:44,279 --> 00:11:00,779 Se supone que esto va a funcionar. Va a leer el número, se va a quedar primero aquí parado y va a decir este mensaje. Luego se va a quedar parado en NextLine. Se va a quedar parado después de cómo te llamas. Se va a quedar parado cuando ya metamos el nombre de la persona y ya nos dirá esto. 231 00:11:00,779 --> 00:11:03,639 Bueno, y esto de aquí del principio 232 00:11:03,639 --> 00:11:06,519 Bueno, antes nos va a pedir la cadena 233 00:11:06,519 --> 00:11:07,200 Para decir 234 00:11:07,200 --> 00:11:09,679 Vamos a comentarlo todo 235 00:11:09,679 --> 00:11:13,129 Para no 236 00:11:13,129 --> 00:11:14,529 Molestar 237 00:11:14,529 --> 00:11:17,490 Se queda comentada la parte anterior 238 00:11:17,490 --> 00:11:20,129 Nuestro programa ahora mismo solamente tiene 239 00:11:20,129 --> 00:11:20,750 Esto 240 00:11:20,750 --> 00:11:24,360 Entendemos todo el mundo 241 00:11:24,360 --> 00:11:27,480 Vale, vamos a ejecutarlo 242 00:11:27,480 --> 00:11:31,700 Ese es el código 243 00:11:31,700 --> 00:11:33,100 Que queremos ejecutar, el que está ahí 244 00:11:33,100 --> 00:11:37,409 Vale, estamos aquí 245 00:11:37,409 --> 00:11:39,870 ha mostrado introduzca número, se queda aquí paradito 246 00:11:39,870 --> 00:11:41,470 introduzca número, venga, vale 247 00:11:41,470 --> 00:11:43,110 vamos a meter el 45 248 00:11:43,110 --> 00:11:46,149 aquí ha llegado 249 00:11:46,149 --> 00:11:48,029 ha introducido el número 45 250 00:11:48,029 --> 00:11:48,649 muy bien 251 00:11:48,649 --> 00:11:50,830 luego me dice, ¿cómo te llamas? 252 00:11:51,250 --> 00:11:52,190 ¿cómo te llamas? vale 253 00:11:52,190 --> 00:11:55,610 y aquí, debería haberse quedado esperando 254 00:11:55,610 --> 00:11:56,870 y me ha fallado 255 00:11:56,870 --> 00:11:59,250 no debería haberse quedado aquí esperando 256 00:11:59,250 --> 00:12:00,929 a que yo le metiera una cadena 257 00:12:00,929 --> 00:12:02,730 ahí esperando 258 00:12:02,730 --> 00:12:04,409 y una vez que se la he metido 259 00:12:04,409 --> 00:12:06,409 ahora ya hubiera mostrado esto 260 00:12:06,409 --> 00:12:08,289 Pues no lo ha hecho 261 00:12:08,289 --> 00:12:10,250 No solo no se ha quedado esperando aquí 262 00:12:10,250 --> 00:12:11,289 No solo no se ha quedado 263 00:12:11,289 --> 00:12:14,350 Sino que encima le ha dado a nombre 264 00:12:14,350 --> 00:12:15,970 Un valor vacío 265 00:12:15,970 --> 00:12:18,429 O sea, aquí ha pasado algo raro 266 00:12:18,429 --> 00:12:20,409 Que no preveíamos 267 00:12:20,409 --> 00:12:20,870 ¿Verdad? 268 00:12:22,269 --> 00:12:24,409 Está claro, ¿no? Que no preveíamos que pasara esto 269 00:12:24,409 --> 00:12:26,690 Preveíamos que se quedara parado ahí 270 00:12:26,690 --> 00:12:27,470 Esperando un nombre 271 00:12:27,470 --> 00:12:28,710 Pues no lo ha hecho 272 00:12:28,710 --> 00:12:31,090 ¿Por qué no lo ha hecho? 273 00:12:32,250 --> 00:12:33,769 Por un funcionamiento del escáner 274 00:12:33,769 --> 00:12:35,549 Que memorizaros y aprenderos desde ya 275 00:12:35,549 --> 00:12:38,289 porque vais a tener que contar con él 276 00:12:38,289 --> 00:12:39,929 y arreglarle cada vez que uséis scanner 277 00:12:39,929 --> 00:12:41,190 en todos vuestros programas 278 00:12:41,190 --> 00:12:43,929 bueno, pues que cuando uno usa 279 00:12:43,929 --> 00:12:46,289 una lectura de número, me da igual que sea 280 00:12:46,289 --> 00:12:47,470 next i, next double 281 00:12:47,470 --> 00:12:49,169 cuando uno lee un numerito 282 00:12:49,169 --> 00:12:52,090 en realidad ha metido el numerito 283 00:12:52,090 --> 00:12:54,009 45, yo he metido aquí 45 284 00:12:54,009 --> 00:12:55,169 y el enter 285 00:12:55,169 --> 00:12:57,750 pero claro, en la variable n 286 00:12:57,750 --> 00:12:59,850 la variable n solo quiere el numerito 287 00:12:59,850 --> 00:13:02,169 el enter no lo quiere, solo quiere el numerito 288 00:13:02,169 --> 00:13:03,789 entonces coge el 45 289 00:13:03,789 --> 00:13:06,850 y el enter se ha quedado ahí 290 00:13:06,850 --> 00:13:07,970 en el buffer del teclado 291 00:13:07,970 --> 00:13:09,850 sin que nadie lo procese 292 00:13:09,850 --> 00:13:11,809 muerto de risa y está en el buffer 293 00:13:11,809 --> 00:13:13,789 entonces el buffer no se ha quedado vacío 294 00:13:13,789 --> 00:13:16,669 es el problema, se ha quedado con el salto de línea 295 00:13:16,669 --> 00:13:18,169 que yo di después del 45 296 00:13:18,169 --> 00:13:21,029 vale, llega el como te llamas 297 00:13:21,029 --> 00:13:22,549 ahora llega el next line 298 00:13:22,549 --> 00:13:24,830 ¿qué hacen esas sentencias? ya lo dijimos en su momento 299 00:13:24,830 --> 00:13:26,610 se van al buffer del teclado 300 00:13:26,610 --> 00:13:28,649 a sacar lo que haya y si no hay nada 301 00:13:28,649 --> 00:13:29,970 es cuando se quedan esperando 302 00:13:29,970 --> 00:13:32,970 ¿qué ocurre? que aquí sí que hay algo 303 00:13:32,970 --> 00:13:34,029 aquí está el enter 304 00:13:34,029 --> 00:13:37,269 del next in anterior 305 00:13:37,269 --> 00:13:38,370 está el enter 306 00:13:38,370 --> 00:13:39,909 entonces este next line 307 00:13:39,909 --> 00:13:42,909 coge eso, creyendo que es lo que le hemos metido 308 00:13:42,909 --> 00:13:44,590 porque está ahí esperando, y eso que es 309 00:13:44,590 --> 00:13:46,450 la nada y un enter 310 00:13:46,450 --> 00:13:48,370 la nada, pues coge la nada 311 00:13:48,370 --> 00:13:50,870 se le asigna nombre, porque el enter 312 00:13:50,870 --> 00:13:52,049 es el fin del next line 313 00:13:52,049 --> 00:13:54,269 y es lo que ha hecho, ha funcionado perfectamente 314 00:13:54,269 --> 00:13:56,289 si ha ido al buffer del teclado 315 00:13:56,289 --> 00:13:59,190 ha visto el vacío más el enter 316 00:13:59,190 --> 00:14:01,309 que se ha quedado después del next in 317 00:14:01,309 --> 00:14:02,750 lo ha visto y ha dicho, pues será esto 318 00:14:02,750 --> 00:14:06,230 Lo ha cogido, aquí está ese vacío y ya está. 319 00:14:08,549 --> 00:14:12,529 Entonces, situación del escáner que no nos gusta y funciona mal. 320 00:14:13,169 --> 00:14:18,090 Cuando identificáis que tenéis una secuencia de sentencias en las cuales leéis un número, 321 00:14:18,649 --> 00:14:22,330 next in, next double, next short, y luego después haces un next line. 322 00:14:22,610 --> 00:14:23,889 Eso no va a funcionar nunca. 323 00:14:24,870 --> 00:14:26,110 Por esto que os estoy diciendo. 324 00:14:26,970 --> 00:14:27,990 Entonces uno se vuelve loco. 325 00:14:28,549 --> 00:14:30,909 Dice, pero ¿por qué no se para? ¿Por qué sigue? 326 00:14:30,909 --> 00:14:33,190 aquí lo estamos viendo pero el programa es muy corto 327 00:14:33,190 --> 00:14:34,110 pero un programa más largo 328 00:14:34,110 --> 00:14:35,990 creíamos que todo está bien 329 00:14:35,990 --> 00:14:38,470 y resulta que 330 00:14:38,470 --> 00:14:41,970 340 días después 331 00:14:41,970 --> 00:14:44,009 está funcionando mal 332 00:14:44,009 --> 00:14:45,950 porque cosas que creemos que tienen datos 333 00:14:45,950 --> 00:14:47,149 tienen vacíos 334 00:14:47,149 --> 00:14:49,649 el programa no ha fallado, no ha fallado en ningún momento 335 00:14:49,649 --> 00:14:51,389 el programa no ha fallado, simplemente ha metido un vacío 336 00:14:51,389 --> 00:14:53,110 donde yo creía que hay un nombre 337 00:14:53,110 --> 00:14:53,789 ha metido un vacío 338 00:14:53,789 --> 00:14:56,850 entonces a lo mejor nos damos cuenta 339 00:14:56,850 --> 00:14:59,450 200 días después que el programa está trabajando 340 00:14:59,450 --> 00:15:01,429 con vacíos y lo que está haciendo no vale para nada 341 00:15:01,429 --> 00:15:03,490 bueno pues 342 00:15:03,490 --> 00:15:05,990 no hay más manera de arreglarlo 343 00:15:05,990 --> 00:15:07,590 que quitando 344 00:15:07,590 --> 00:15:09,009 que después de leer un número 345 00:15:09,009 --> 00:15:10,149 después de leer un número 346 00:15:10,149 --> 00:15:13,370 si nosotros automáticamente hacemos un next line 347 00:15:13,370 --> 00:15:17,389 limpiamos ese enter que se ha quedado ahí 348 00:15:17,389 --> 00:15:18,889 lo limpiamos 349 00:15:18,889 --> 00:15:20,149 así 350 00:15:20,149 --> 00:15:21,830 ala 351 00:15:21,830 --> 00:15:25,029 el enter que se quedó aquí limpito 352 00:15:25,029 --> 00:15:27,309 lo acabo de limpiar, ya no hay nada en el buffer 353 00:15:27,309 --> 00:15:28,690 claro 354 00:15:28,690 --> 00:15:31,049 este scanless line que se ha quedado ahí suelto 355 00:15:31,049 --> 00:15:32,769 diríamos, hombre, pero normalmente 356 00:15:32,769 --> 00:15:35,029 siempre asignamos a las cosas 357 00:15:35,029 --> 00:15:36,809 lo que hacemos, vamos a asignárselo a algún lado 358 00:15:36,809 --> 00:15:39,149 sí, claro, yo puedo hacer ahí un string 359 00:15:39,149 --> 00:15:40,570 lo que quiera para asignárselo 360 00:15:40,570 --> 00:15:42,769 pero puedo pasar de él 361 00:15:42,769 --> 00:15:44,629 o sea, si yo quito esto 362 00:15:44,629 --> 00:15:47,250 lo que estoy diciendo es 363 00:15:47,250 --> 00:15:49,690 haz la evaluación de la expresión 364 00:15:49,690 --> 00:15:51,330 que la evaluación de la expresión es 365 00:15:51,330 --> 00:15:53,289 lee del teclado 366 00:15:53,289 --> 00:15:54,509 y el resultado 367 00:15:54,509 --> 00:15:56,149 tíralo a la basura 368 00:15:56,149 --> 00:15:58,129 no se lo asignes a nadie 369 00:15:58,129 --> 00:15:58,990 tírala a la basura 370 00:15:58,990 --> 00:16:01,870 cuando evalúo una expresión puedo optar 371 00:16:01,870 --> 00:16:04,210 por asignársela a una variable 372 00:16:04,210 --> 00:16:05,529 por asignársela 373 00:16:05,529 --> 00:16:07,909 o por pasar de ella y lanzarla a la basura 374 00:16:07,909 --> 00:16:10,350 pues en este caso como lo que quiero es 375 00:16:10,350 --> 00:16:12,070 no asignarla a una variable 376 00:16:12,070 --> 00:16:13,850 sino pasar de ella y tirársela a la basura 377 00:16:13,850 --> 00:16:15,769 pues pongo la expresión sin más 378 00:16:15,769 --> 00:16:17,710 ¿vale? 379 00:16:17,990 --> 00:16:20,610 entonces ahora ya, sí, uno tiene que acordarse 380 00:16:20,610 --> 00:16:21,870 después de leer números 381 00:16:21,870 --> 00:16:24,110 si va a leer caracteres 382 00:16:24,110 --> 00:16:26,490 cadenas 383 00:16:26,490 --> 00:16:28,950 limpiar ese enter que se ha quedado ahí muerto de risa 384 00:16:28,950 --> 00:16:30,590 entonces ahora esto sí 385 00:16:30,590 --> 00:16:31,750 ya sí que nos funcionará 386 00:16:31,750 --> 00:16:34,570 introduzca número 76 387 00:16:34,570 --> 00:16:36,330 ahora, ¿cómo te llamas? 388 00:16:36,409 --> 00:16:38,269 ahora ya sí que se ha quedado esperando, ahora ya sí 389 00:16:38,269 --> 00:16:40,110 porque este next line 390 00:16:40,110 --> 00:16:41,970 limpió ese salto de línea 391 00:16:41,970 --> 00:16:43,970 al limpiar ese salto de línea 392 00:16:43,970 --> 00:16:46,309 el next line este cuando ha ido 393 00:16:46,309 --> 00:16:47,909 al buffer ha visto que no tiene nada 394 00:16:47,909 --> 00:16:50,289 entonces no le queda más remedio que estar esperando 395 00:16:50,289 --> 00:16:52,950 ala, ya está 396 00:16:52,950 --> 00:16:56,250 vale 397 00:16:56,250 --> 00:16:58,889 bueno, pues entonces, ahora ya 398 00:16:58,889 --> 00:17:00,850 podemos usar el escáner para leer cadenas 399 00:17:00,850 --> 00:17:01,830 sin ningún miedo 400 00:17:01,830 --> 00:17:04,730 pero cuidado con la combinación 401 00:17:04,730 --> 00:17:07,309 leo número y después leo cadena 402 00:17:07,309 --> 00:17:09,430 porque de la cadena va a pasar 403 00:17:09,430 --> 00:17:11,190 porque se va a quedar con el enter anterior 404 00:17:11,190 --> 00:17:14,950 cuando encadenáis varios números seguidos 405 00:17:14,950 --> 00:17:16,890 varios next in seguidos, no hay problema 406 00:17:16,890 --> 00:17:18,529 cuando hacéis un next in, next in 407 00:17:18,529 --> 00:17:20,569 después de un next in el enter se ha quedado 408 00:17:20,569 --> 00:17:22,589 eso está bien, eso siempre pasa 409 00:17:22,589 --> 00:17:24,289 pero el siguiente next in 410 00:17:24,289 --> 00:17:26,769 Cuando ve que lo que hay en el buffer 411 00:17:26,769 --> 00:17:27,849 Es un enter 412 00:17:27,849 --> 00:17:31,269 El objeto escáner está pensado 413 00:17:31,269 --> 00:17:32,769 Para que diga, no, esto no me vale como número 414 00:17:32,769 --> 00:17:34,230 Y se queda esperando igualmente 415 00:17:34,230 --> 00:17:37,329 ¿Vale? Pero la combinación peligrosa 416 00:17:37,329 --> 00:17:38,849 La peligrosa, la que tenéis que memorizar 417 00:17:38,849 --> 00:17:39,849 Que es peligrosa es 418 00:17:39,849 --> 00:17:43,049 Lectura de número, inmediatamente después next line 419 00:17:43,049 --> 00:17:44,970 Esa es la secuencia por la que 420 00:17:44,970 --> 00:17:46,130 El escáner no funciona 421 00:17:46,130 --> 00:17:48,069 No es que no funcione, es que tiene este efecto 422 00:17:48,069 --> 00:17:50,509 ¿Vale? Tiene este efecto 423 00:17:50,509 --> 00:17:53,150 Y como es una secuencia que podemos utilizarla mucho 424 00:17:53,150 --> 00:17:55,569 Querer leer números y después nombres o lo que sea 425 00:17:55,569 --> 00:17:57,390 Pues acordaos de esto 426 00:17:57,390 --> 00:17:59,329 ¿Vale? Acordaos de esto 427 00:17:59,329 --> 00:18:01,430 Lo memorizáis para que cuando os den errores 428 00:18:01,430 --> 00:18:02,809 Automáticamente lo ubiquéis 429 00:18:02,809 --> 00:18:07,589 Bueno, pues ahora ya sabiendo leer 430 00:18:07,589 --> 00:18:09,549 No solo números, sino también cadenas 431 00:18:09,549 --> 00:18:11,470 Se nos abren 432 00:18:11,470 --> 00:18:14,069 Más opciones para poder hacer ejercicios 433 00:18:14,069 --> 00:18:15,349 Para poder hacer cosas 434 00:18:15,349 --> 00:18:18,170 ¿Vale? 435 00:18:27,970 --> 00:18:29,789 Por ejemplo, vamos a ver 436 00:18:29,789 --> 00:18:30,809 Tenemos ahora 437 00:18:30,809 --> 00:18:32,890 vamos a 438 00:18:32,890 --> 00:18:34,990 con las cadenas estas de aquí 439 00:18:34,990 --> 00:18:37,589 tenemos ya leído el nombrecito 440 00:18:37,589 --> 00:18:39,250 con este nombre 441 00:18:39,250 --> 00:18:40,069 yo que puedo hacer 442 00:18:40,069 --> 00:18:43,069 con este nombre obviamente lo que puedo hacer es mostrarlo 443 00:18:43,069 --> 00:18:44,869 por consola, como hemos hecho siempre 444 00:18:44,869 --> 00:18:47,049 vale, pero hay una cosa 445 00:18:47,049 --> 00:18:48,349 que también podemos hacer 446 00:18:48,349 --> 00:18:50,809 que tenemos que incorporar desde ya 447 00:18:50,809 --> 00:18:53,069 porque la necesitamos para muchos ejercicios 448 00:18:53,609 --> 00:18:55,329 de una cadena de caracteres 449 00:18:55,329 --> 00:18:56,569 puede ser que uno necesite 450 00:18:56,569 --> 00:18:58,890 conocer el carácter 451 00:18:58,890 --> 00:19:00,069 que hay en determinada posición 452 00:19:00,069 --> 00:19:03,349 A lo mejor le interesa, sabe el carácter que hay en determinada posición 453 00:19:03,349 --> 00:19:05,109 ¿Vale? 454 00:19:06,009 --> 00:19:07,869 Bueno, pues ¿cómo hacemos eso? 455 00:19:08,250 --> 00:19:09,849 Pues si yo tengo una cadena cualquiera 456 00:19:09,849 --> 00:19:11,869 Como por ejemplo nombre, una cadena cualquiera 457 00:19:11,869 --> 00:19:13,789 Yo puedo hacer esta llamada 458 00:19:13,789 --> 00:19:16,730 La llamada está de aquí 459 00:19:16,730 --> 00:19:17,890 Y poner aquí una posición 460 00:19:17,890 --> 00:19:20,970 Que empieza desde la 0, 1, 2 461 00:19:20,970 --> 00:19:22,869 Y esta llamada ¿qué me hace? 462 00:19:23,930 --> 00:19:25,750 Me devuelve el char 463 00:19:25,750 --> 00:19:29,069 Que está en la posición 464 00:19:29,069 --> 00:19:30,730 que yo haya puesto ahí 465 00:19:30,730 --> 00:19:34,230 vale, entonces incorporar 466 00:19:34,230 --> 00:19:36,109 esto desde ya 467 00:19:36,109 --> 00:19:37,670 si yo tengo un string 468 00:19:37,670 --> 00:19:39,549 y a ese string 469 00:19:39,549 --> 00:19:41,910 le hago la llamada charat 470 00:19:41,910 --> 00:19:43,029 con la A mayúscula 471 00:19:43,029 --> 00:19:45,650 y pongo aquí un número entero 472 00:19:45,650 --> 00:19:46,670 un número entero 473 00:19:46,670 --> 00:19:49,809 lo que hace esta expresión es 474 00:19:49,809 --> 00:19:51,750 devolverme un char 475 00:19:51,750 --> 00:19:53,609 y es el char que está en esa 476 00:19:53,609 --> 00:19:55,769 posición dentro de la cadena 477 00:19:55,769 --> 00:19:57,670 asumiendo la primera 478 00:19:57,670 --> 00:19:59,589 a la cero, asumiendo la primera 479 00:19:59,589 --> 00:20:01,750 a la cero, entonces en este caso 480 00:20:01,750 --> 00:20:03,529 por ejemplo 481 00:20:03,529 --> 00:20:05,710 esta llamada 482 00:20:05,710 --> 00:20:07,369 me haría, me devolvería 483 00:20:07,369 --> 00:20:09,410 la inicial 484 00:20:09,410 --> 00:20:10,970 la inicial 485 00:20:10,970 --> 00:20:12,490 del nombre 486 00:20:12,490 --> 00:20:15,789 vale, me devolvería 487 00:20:15,789 --> 00:20:16,849 la inicial del nombre 488 00:20:16,849 --> 00:20:28,470 en este caso, vale 489 00:20:28,470 --> 00:20:30,470 pues venga, en lo que queda de 490 00:20:30,470 --> 00:20:32,089 en lo que queda de 491 00:20:32,089 --> 00:20:34,990 de clase 492 00:20:34,990 --> 00:20:36,710 Para practicar, vamos a ver 493 00:20:36,710 --> 00:20:38,549 Vamos a incorporar aquí 494 00:20:38,549 --> 00:21:22,500 Vale, pues venga 495 00:21:22,500 --> 00:21:24,720 Hacer este 496 00:21:24,720 --> 00:21:25,680 Esto no 497 00:21:25,680 --> 00:21:28,220 Esto no es de switch case ni de nada 498 00:21:28,220 --> 00:21:30,420 Esto ahora mismo es para que practiquéis 499 00:21:30,420 --> 00:21:33,200 Con esto último que hemos visto, la lectura de cadenas 500 00:21:33,200 --> 00:21:34,400 Vale 501 00:21:34,400 --> 00:21:36,779 Pues venga 502 00:21:36,779 --> 00:21:38,140 A ver que, y lo muestre 503 00:21:38,140 --> 00:21:40,119 Pero se supone que el nombre que ha introducido 504 00:21:40,119 --> 00:21:42,700 Juan, Lourdes, lo que sea, todo en minúscula 505 00:21:42,700 --> 00:21:44,440 Pues va a mostrarlo 506 00:21:44,440 --> 00:21:49,160 pero poniendo la inicial en mayúscula 507 00:21:49,160 --> 00:21:53,319 acordaos de, la idea ahora es que ligueis conocimientos que ya sabéis 508 00:21:53,319 --> 00:21:57,779 de char, de tabla ASCII, de todo eso 509 00:21:57,779 --> 00:21:59,259 y leer un nombre 510 00:21:59,259 --> 00:22:01,740 venga a ver que