1 00:00:00,000 --> 00:00:03,480 No se ha grabado el reconocimiento a Kalil 2 00:00:03,480 --> 00:00:04,919 Me funciona 3 00:00:04,919 --> 00:00:06,820 Venga, a ver, ahora 4 00:00:06,820 --> 00:00:09,220 Vamos a ver, este código ya está 5 00:00:09,220 --> 00:00:11,699 Ya lo hemos comprobado y estupendo 6 00:00:11,699 --> 00:00:12,439 No, ya lo has cambiado 7 00:00:12,439 --> 00:00:14,539 No, no lo he cambiado todavía 8 00:00:14,539 --> 00:00:17,640 Vale, ponemos 4 9 00:00:17,640 --> 00:00:18,640 Venga, XX 10 00:00:18,640 --> 00:00:21,460 Y ZZ y XX 11 00:00:21,460 --> 00:00:22,140 Vale 12 00:00:22,140 --> 00:00:25,019 Entonces uno diría, voy a 13 00:00:25,019 --> 00:00:27,519 Cambiar, a lo mejor uno, este mismo código 14 00:00:27,519 --> 00:00:29,059 Me da igual hacer 15 00:00:29,059 --> 00:00:31,059 palabra sí igual a aux de j 16 00:00:31,059 --> 00:00:33,020 que hacer aux de j igual a 17 00:00:33,020 --> 00:00:35,280 palabra sí, ¿no? A mí se me ha ocurrido 18 00:00:35,280 --> 00:00:35,979 hacerlo así 19 00:00:35,979 --> 00:00:38,679 y se me ha ocurrido hacerlo así 20 00:00:38,679 --> 00:00:41,240 pero uno pensaría, bueno, ¿qué más me da 21 00:00:41,240 --> 00:00:42,939 poner x igual a y 22 00:00:42,939 --> 00:00:45,520 que poner y igual a x? Es la misma expresión, ¿no? 23 00:00:45,820 --> 00:00:46,759 Pues vamos a cambiarla. 24 00:00:48,759 --> 00:00:53,189 ¡Qué listillos sois! 25 00:00:54,189 --> 00:00:54,890 Y qué rápidos. 26 00:00:56,890 --> 00:00:59,250 Sí, vale, pero está vacío 27 00:00:59,250 --> 00:01:00,670 en el otro sentido también. 28 00:01:01,270 --> 00:01:03,490 lo que quiero es que identifiquemos bien bien el problema 29 00:01:03,490 --> 00:01:05,450 pero serio, vale, entonces en principio 30 00:01:05,450 --> 00:01:07,010 esto sería lo mismo, ¿verdad? 31 00:01:07,590 --> 00:01:09,090 esto es para comprobar 32 00:01:09,090 --> 00:01:11,450 si esta palabra es igual 33 00:01:11,450 --> 00:01:13,230 que esta otra, me da igual hacer 34 00:01:13,230 --> 00:01:15,010 palabras de i equals aus de j 35 00:01:15,010 --> 00:01:17,189 que aus de j equals 36 00:01:17,189 --> 00:01:18,010 palabras de i 37 00:01:18,010 --> 00:01:21,230 sí pero no 38 00:01:21,230 --> 00:01:22,349 ahí estás cambiando j 39 00:01:22,349 --> 00:01:23,790 no estoy cambiando j 40 00:01:23,790 --> 00:01:27,189 no estoy incrementando j 41 00:01:27,189 --> 00:01:28,469 lo único que he hecho 42 00:01:28,469 --> 00:01:31,090 cambié el orden, es como si una 43 00:01:31,090 --> 00:01:33,010 condición pones x doble igual a y 44 00:01:33,010 --> 00:01:34,530 o pones y doble igual a x. 45 00:01:36,950 --> 00:01:38,950 A ver, se ve raro, pero porque ya os 46 00:01:38,950 --> 00:01:40,969 imagináis que es raro porque yo lo he puesto 47 00:01:40,969 --> 00:01:43,189 así. Pero no es que se vea 48 00:01:43,189 --> 00:01:45,069 raro. O sea, si tú comparas un string con otro 49 00:01:45,069 --> 00:01:46,890 siempre es un string 50 00:01:46,890 --> 00:01:47,569 punto igual. 51 00:01:47,569 --> 00:01:49,310 Como el por ese lo que estás recorriendo es 52 00:01:49,310 --> 00:01:51,569 desde j hasta el aus len. 53 00:01:52,370 --> 00:01:53,709 Ya, pero ¿y por qué se ve 54 00:01:53,709 --> 00:01:55,569 raro? Pues aus j no se ve raro. 55 00:01:56,209 --> 00:01:57,189 No se ve nada raro. 56 00:01:57,530 --> 00:01:59,390 La posición, yo voy recorriendo aus 57 00:01:59,390 --> 00:02:00,530 para todas las posiciones. 58 00:02:01,090 --> 00:02:02,269 Pues, ¿vale? 59 00:02:02,709 --> 00:02:06,790 La posición J esima es igual a palabras de Y, 60 00:02:07,349 --> 00:02:10,150 que no es igual. 61 00:02:10,469 --> 00:02:12,370 Paso a la siguiente, la J igual a 1. 62 00:02:12,370 --> 00:02:14,969 La posición 1 esima es igual a Y. 63 00:02:15,110 --> 00:02:16,389 No, o sea, raro no se ve, 64 00:02:16,949 --> 00:02:18,629 porque esto es una sentencia de igualdad. 65 00:02:18,710 --> 00:02:20,509 X igual a Y o es igual a X, es lo mismo. 66 00:02:21,530 --> 00:02:23,569 Entonces, uno podría haber escrito esto 67 00:02:23,569 --> 00:02:24,930 sin haber hecho nada raro. 68 00:02:25,250 --> 00:02:26,189 Tiene todo el sentido del mundo. 69 00:02:26,849 --> 00:02:28,810 Entonces, ahora ejecutamos este código otra vez. 70 00:02:28,810 --> 00:02:31,650 ¿cuántas palabras vamos a introducir? 71 00:02:32,050 --> 00:02:33,550 pues 5, venga 72 00:02:33,550 --> 00:02:35,729 xx y i 73 00:02:35,729 --> 00:02:37,310 hh 74 00:02:37,310 --> 00:02:39,729 xx y gg 75 00:02:39,729 --> 00:02:40,949 vale 76 00:02:40,949 --> 00:02:43,469 gg y me sale 77 00:02:43,469 --> 00:02:45,810 null pointer exception 78 00:02:45,810 --> 00:02:47,349 amai 79 00:02:47,349 --> 00:02:48,370 null pointer exception 80 00:02:48,370 --> 00:02:50,750 no 81 00:02:50,750 --> 00:02:52,669 puntero nulo 82 00:02:52,669 --> 00:02:55,629 estás accediendo a una dirección de memoria 83 00:02:55,629 --> 00:02:56,210 nula 84 00:02:56,210 --> 00:02:58,909 Vamos a ver dónde nos lleva 85 00:02:58,909 --> 00:02:59,889 Uy, qué casualidad 86 00:02:59,889 --> 00:03:01,469 A la que hemos cambiado 87 00:03:01,469 --> 00:03:04,389 Vale, ¿qué está pasando aquí? 88 00:03:05,870 --> 00:03:07,349 Claro, ¿qué está pasando aquí? 89 00:03:08,009 --> 00:03:08,509 AUX 90 00:03:08,509 --> 00:03:09,909 Cuando lo hemos creado aquí 91 00:03:09,909 --> 00:03:12,210 Hemos hecho un array de n posiciones 92 00:03:12,210 --> 00:03:16,319 Y este array 93 00:03:16,319 --> 00:03:18,439 Que 94 00:03:18,439 --> 00:03:21,879 Este array que hemos creado 95 00:03:21,879 --> 00:03:23,460 De n posiciones 96 00:03:23,460 --> 00:03:25,259 Al yo no meterle nada 97 00:03:25,259 --> 00:03:27,620 que hemos dicho que cuando un array 98 00:03:27,620 --> 00:03:29,639 es de números, por defecto 99 00:03:29,639 --> 00:03:31,759 se le ponen ceros, pero si es de objeto 100 00:03:31,759 --> 00:03:32,759 por defecto se le pone null 101 00:03:32,759 --> 00:03:34,919 y los strings son objetos 102 00:03:34,919 --> 00:03:37,699 entonces este array recién creado tiene null 103 00:03:37,699 --> 00:03:38,500 en todas partes 104 00:03:38,500 --> 00:03:41,479 entonces un objeto null no puede llamar 105 00:03:41,479 --> 00:03:43,060 a ningún método, no puede 106 00:03:43,060 --> 00:03:45,120 no puede porque es null 107 00:03:45,120 --> 00:03:47,699 si hacemos que un objeto null llame a un método 108 00:03:47,699 --> 00:03:48,900 me sale null pointer exception 109 00:03:48,900 --> 00:03:51,199 claro, entonces que pasa 110 00:03:51,199 --> 00:03:52,340 que aquí la igualdad 111 00:03:52,340 --> 00:03:54,500 aquí la igualdad 112 00:03:54,500 --> 00:03:56,020 hay que hacerla obligatoriamente 113 00:03:56,020 --> 00:03:57,780 entre objetos, la igualdad entre objetos 114 00:03:57,780 --> 00:03:59,919 se hace obligatoriamente llamando a equals 115 00:03:59,919 --> 00:04:02,460 claro, entonces 116 00:04:02,460 --> 00:04:04,460 aux de j es null 117 00:04:04,460 --> 00:04:06,039 la primera vez es null 118 00:04:06,039 --> 00:04:08,259 entonces null no puede llamar 119 00:04:08,259 --> 00:04:10,159 a ningún método, no puede, porque un objeto null 120 00:04:10,159 --> 00:04:10,599 no puede 121 00:04:10,599 --> 00:04:12,620 entonces 122 00:04:12,620 --> 00:04:15,199 me sale null pointer exception 123 00:04:15,199 --> 00:04:17,819 pero si yo cambio el orden no hay problema 124 00:04:17,819 --> 00:04:19,939 porque palabras de i no es null 125 00:04:19,939 --> 00:04:20,939 puede llamar al método 126 00:04:20,939 --> 00:04:23,300 pero sí se puede hacer la igualdad con un nul 127 00:04:23,300 --> 00:04:24,920 ¿es igual al objeto nul? 128 00:04:25,060 --> 00:04:28,240 no, entonces si cambio el orden 129 00:04:28,240 --> 00:04:30,240 imaginaos que quisierais seguir este orden 130 00:04:30,240 --> 00:04:34,120 cambiando el orden está claro que no hay problema 131 00:04:34,120 --> 00:04:35,600 palabras de ahí sí tiene algo 132 00:04:35,600 --> 00:04:37,399 ¿ese algo es igual a nul? 133 00:04:37,899 --> 00:04:39,779 no, no es igual, o sí, sí es igual 134 00:04:39,779 --> 00:04:40,879 no va a ser, claro 135 00:04:40,879 --> 00:04:44,779 pero podríais hacer 136 00:04:44,779 --> 00:04:47,759 que queréis mantener 137 00:04:47,759 --> 00:04:49,399 que queremos mantener este orden 138 00:04:49,399 --> 00:04:51,319 pues podemos hacer esto 139 00:04:51,319 --> 00:04:53,519 si aux de j 140 00:04:53,519 --> 00:04:57,470 es diferente 141 00:04:57,470 --> 00:04:58,170 de null 142 00:04:58,170 --> 00:04:59,970 y 143 00:04:59,970 --> 00:05:03,170 siendo diferente de null, además 144 00:05:03,170 --> 00:05:05,350 su contenido es igual a palabras 145 00:05:05,350 --> 00:05:07,389 de i, si hacemos esto 146 00:05:07,389 --> 00:05:08,170 ya lo arreglamos. 147 00:05:09,129 --> 00:05:11,689 ¿Vale? Si hacemos esto ya lo arreglamos. 148 00:05:12,089 --> 00:05:13,250 Porque estamos diciendo, 149 00:05:13,370 --> 00:05:15,250 a ver, voy a comprobar con cada 150 00:05:15,250 --> 00:05:17,389 palabra j. Si esa palabra 151 00:05:17,389 --> 00:05:19,189 es null, es que ya sé que es distinta 152 00:05:19,189 --> 00:05:21,230 a la palabra original, es que es distinta. 153 00:05:21,230 --> 00:05:22,689 no tengo ni que entrar 154 00:05:22,689 --> 00:05:25,170 y si esa palabra no es null 155 00:05:25,170 --> 00:05:26,490 entonces ahora ya 156 00:05:26,490 --> 00:05:29,550 miro si es igual a la que estoy comprobando 157 00:05:29,550 --> 00:05:31,069 entonces si queremos mantener este orden 158 00:05:31,069 --> 00:05:32,050 por la razón que sea 159 00:05:32,050 --> 00:05:34,750 añadimos esto antes 160 00:05:34,750 --> 00:05:36,110 y listo y solucionado 161 00:05:36,110 --> 00:05:39,790 o esto o cambiamos el orden 162 00:05:39,790 --> 00:05:43,550 entonces si lo hacemos así 163 00:05:43,550 --> 00:05:48,370 ahora ya si 4 164 00:05:48,370 --> 00:05:50,370 XX 165 00:05:50,370 --> 00:05:52,029 Y VV 166 00:05:52,029 --> 00:05:52,730 XX 167 00:05:52,730 --> 00:05:56,069 Vale, ahora ya se ha eliminado el duplicado XX 168 00:05:56,069 --> 00:06:00,149 Vale, pues venga, un mini descansito