0 00:00:00,000 --> 00:00:08,000 Voy a grabar este ejercicio, por lo tanto, si habláis, me dais vuestro consentimiento a que vuestras voces sean grabadas. 1 00:00:08,000 --> 00:00:14,000 Voy a hacer el ejercicio 6. Leer una frase, encontrar la palabra de mayor longitud. 2 00:00:14,000 --> 00:00:20,000 El programa debe imprimir tanto la palabra como el número de caracteres de la misma. 3 00:00:21,000 --> 00:00:25,000 Vamos a hacer el ejercicio. 4 00:00:33,000 --> 00:00:36,000 Empezamos. Pongamos una frase. 5 00:00:36,000 --> 00:00:47,000 String texto es igual... este es el texto que voy a usar. 6 00:00:47,000 --> 00:00:50,000 La palabra más larga es texto. 7 00:00:50,000 --> 00:00:54,000 Al final me debería decir texto y 5. 8 00:00:57,000 --> 00:01:02,000 ¿Qué necesito aquí para poder trabajar con esto? 9 00:01:06,000 --> 00:01:13,000 Imaginaos que empezáis ahora a hacer este ejercicio y estáis pensando en cómo lo hago. 10 00:01:13,000 --> 00:01:26,000 ¿Qué necesito? Al principio me tengo que pensar qué variables, qué información quiero guardar por algún lado para poder trabajar sobre ello. 11 00:01:26,000 --> 00:01:30,000 ¿Qué necesitaré guardarme en cada momento aquí? 12 00:01:36,000 --> 00:01:41,000 Tengo que mantener por algún lado la palabra más grande que he encontrado hasta ahora. 13 00:01:41,000 --> 00:01:53,000 Porque iré leyendo este texto, mientras lo leo, voy diciendo si lo que he encontrado anteriormente era una palabra larga X, 14 00:01:53,000 --> 00:01:59,000 encuentro una palabra más grande, pues entonces sustituiré la que estaba guardando antes con la palabra más grande. 15 00:01:59,000 --> 00:02:06,000 Si en vez de la palabra que leo siguiente es más corta que la anterior, pues entonces no me hace falta. 16 00:02:06,000 --> 00:02:10,000 Esta es más o menos la idea que voy a hacer. 17 00:02:10,000 --> 00:02:13,000 Esto se puede hacer de varias formas. 18 00:02:13,000 --> 00:02:18,000 Yo voy a hacer una, luego a lo mejor después razonamos si hay otras formas. 19 00:02:18,000 --> 00:02:28,000 Yo lo que voy a hacer es construirme las palabras actual leyendo carácter por carácter de este texto hasta llegar a un espacio. 20 00:02:28,000 --> 00:02:33,000 Porque esto así reutiliza también lo que ya se hace, que es encontrar espacios. 21 00:02:34,000 --> 00:02:50,000 Por lo tanto, lo que voy a hacer es crearme por un lado un string mayor, que es la palabra mayor que he encontrado hasta ahora, que es nada. 22 00:02:50,000 --> 00:02:52,000 Por ahora no he encontrado nada. 23 00:02:52,000 --> 00:02:59,000 Y luego utilizaré otro string que será el que leo actualmente. 24 00:02:59,000 --> 00:03:02,000 Entonces será string actual. 25 00:03:06,000 --> 00:03:13,000 Actualmente voy leyendo una string, cuando acabo de haber leído una palabra, comparo si actual es más larga que mayor, 26 00:03:13,000 --> 00:03:17,000 entonces guardaré actual en mayor, y si no en mayor se quedará como está. 27 00:03:20,000 --> 00:03:27,000 Entonces, lo que voy a hacer es, tengo que leer todo este texto, como antes, como el ejercicio 5 que hemos hecho antes. 28 00:03:28,000 --> 00:03:39,000 Por lo tanto voy a hacer un for, int i es igual a cero, i menor que texto.length, y más más. 29 00:03:40,000 --> 00:03:44,000 Es el mismo for que hemos visto en el ejercicio 5. 30 00:03:44,000 --> 00:04:02,000 Lo que estaría haciendo es mirar cada uno de estos caracteres, y si es un carácter que no es un espacio, pues lo voy acumulando en mi cadena actual. 31 00:04:02,000 --> 00:04:26,000 Entonces, si lo que leo en este momento, es decir, texto punto charat de i, no es un espacio. 32 00:04:33,000 --> 00:04:35,000 No me lo pillo. 33 00:04:37,000 --> 00:04:48,000 Si texto punto charat en posición i no es un espacio, es distinto de un espacio, entonces, ¿qué hago? 34 00:04:49,000 --> 00:05:04,000 Actual será igual a lo que tengo en actual, más ese carácter. 35 00:05:06,000 --> 00:05:14,000 Voy concadenando al final de mi cadena actual el nuevo carácter que estoy leyendo. 36 00:05:15,000 --> 00:05:21,000 Yo leo una e, no es un espacio, pues lo añado al final de esta cadena aquí. 37 00:05:22,000 --> 00:05:26,000 Luego leo la s, no es un espacio, por lo tanto lo pongo al final de esta cadena aquí. 38 00:05:27,000 --> 00:05:31,000 Y así, así, así, hasta que encuentre un espacio. 39 00:05:32,000 --> 00:05:37,000 Cuando encuentre un espacio, he acabado esta palabra. 40 00:05:37,000 --> 00:05:49,000 Entonces, cuando esto será falso, y entraré en el else, ahora mismo, en este instante, esta cosa de aquí va al espacio. 41 00:05:50,000 --> 00:05:54,000 Y a mí no me interesa, porque el espacio no lo tengo que considerar. 42 00:05:55,000 --> 00:06:00,000 ¿Qué tengo que hacer aquí dentro? Cuando llego aquí dentro, asumo que, ¿qué hay dentro de actual? 43 00:06:02,000 --> 00:06:04,000 La palabra que he leído. 44 00:06:04,000 --> 00:06:05,000 La palabra que he leído. 45 00:06:06,000 --> 00:06:07,000 Entonces, ¿qué tendré que hacer? 46 00:06:08,000 --> 00:06:09,000 Compararla con la otra. 47 00:06:10,000 --> 00:06:11,000 Sí. 48 00:06:15,000 --> 00:06:19,000 ¿Cómo comparo la palabra que he leído? 49 00:06:20,000 --> 00:06:21,000 Sí, actual. 50 00:06:22,000 --> 00:06:23,000 Actual, ¿qué más? 51 00:06:25,000 --> 00:06:26,000 Punto length. 52 00:06:27,000 --> 00:06:30,000 Es la longitud de esta cadena. 53 00:06:35,000 --> 00:06:37,000 ¿Qué hago? 54 00:06:38,000 --> 00:06:39,000 Es mayor. 55 00:06:40,000 --> 00:06:42,000 Que mayor punto length. 56 00:06:47,000 --> 00:06:53,000 Entonces quiere decir que actual es más grande que mayor, y por lo tanto es mi nueva mayor. 57 00:06:54,000 --> 00:06:57,000 Es decir, mayor es igual a actual. 58 00:06:59,000 --> 00:07:00,000 ¿Y si no? 59 00:07:05,000 --> 00:07:06,000 Si no, nada. 60 00:07:07,000 --> 00:07:11,000 Quiere decir que mayor ya es más grande que esta, y entonces no tengo que actualizar mayor. 61 00:07:12,000 --> 00:07:14,000 O sea que no hay un else. 62 00:07:15,000 --> 00:07:23,000 Yo, si encuentro un espacio, voy a comprobar cuál es la más grande, y a este punto, la cago. 63 00:07:25,000 --> 00:07:27,000 ¿Sí? Vale, fenomenal. 64 00:07:28,000 --> 00:07:31,000 Cuando salga de este for... 65 00:07:32,000 --> 00:07:33,000 Luego el for seguirá. 66 00:07:34,000 --> 00:07:35,000 Cuidado que este espacio... 67 00:07:36,000 --> 00:07:38,000 Perdón, me tengo todavía que hacer algo. 68 00:07:39,000 --> 00:07:45,000 Y he llegado a este espacio, he empillado esta, la he comprobado con mi mayor, he visto cuál es la mayor, y he guardado el mayor. 69 00:07:46,000 --> 00:07:47,000 ¿Qué tengo que hacer ahora? 70 00:07:48,000 --> 00:07:49,000 Siempre aquí. 71 00:07:53,000 --> 00:07:55,000 O aquí, en realidad. 72 00:07:57,000 --> 00:07:58,000 He encontrado un espacio. 73 00:07:59,000 --> 00:08:02,000 Entonces he comprobado mi actual con mayor. 74 00:08:03,000 --> 00:08:04,000 No sé si es mayor o menor. 75 00:08:05,000 --> 00:08:10,000 En cualquier caso, lo que tendré que hacer es prepararme para la siguiente palabra. 76 00:08:11,000 --> 00:08:12,000 ¿Cómo me preparo para la siguiente palabra? 77 00:08:16,000 --> 00:08:20,000 Antes de volver para arriba, aquí dentro, dentro de este else, ¿qué tengo que hacer? 78 00:08:28,000 --> 00:08:37,000 Si yo vuelvo arriba sin borrar actual, seguiré pegando detrás de actual las siguientes letras. 79 00:08:38,000 --> 00:08:40,000 Entonces la siguiente palabra sería actuales. 80 00:08:43,000 --> 00:08:50,000 Entonces aquí, una vez que he encontrado un espacio, entonces he hecho mis comprobaciones para ver si es la mayor o no, 81 00:08:51,000 --> 00:08:54,000 tengo que prepararme para la siguiente palabra. 82 00:08:55,000 --> 00:08:57,000 Es decir, actual la vuelvo a poner vacía. 83 00:08:59,000 --> 00:09:04,000 Y luego vuelvo arriba, y ahora encontraré una E, encontraré una S, encontraré un espacio. 84 00:09:05,000 --> 00:09:11,000 Cuando llegue a este espacio, comprueba S con este, ve que este es mayor, por lo tanto no actualizará mayor. 85 00:09:12,000 --> 00:09:14,000 Pero yo vuelvo a poner actual vacío. 86 00:09:15,000 --> 00:09:17,000 Y sigo, sigo, sigo, sigo, sigo, sigo, hasta el final. 87 00:09:18,000 --> 00:09:19,000 ¿Con esto funciona? 88 00:09:21,000 --> 00:09:25,000 Cuando salgo de este for, si todo funciona, 89 00:09:27,000 --> 00:09:37,000 System.out.println, la mayor palabra es más palabra, más mayor, 90 00:09:37,000 --> 00:09:47,000 que tiene más mayor punto lenguaje. 91 00:09:55,000 --> 00:09:59,000 Carácteres, carácteres no. 92 00:10:02,000 --> 00:10:03,000 Letras igual. 93 00:10:04,000 --> 00:10:05,000 Me falta un más. 94 00:10:14,000 --> 00:10:15,000 Vamos a ver si funciona. 95 00:10:19,000 --> 00:10:25,000 La palabra es texto que contiene 5 caracteres. 96 00:10:26,000 --> 00:10:27,000 Hagamos así. 97 00:10:29,000 --> 00:10:31,000 Yo quiero poner aquí unas comillas. 98 00:10:32,000 --> 00:10:34,000 Para que me ponga la mayor palabra es texto entre comillas. 99 00:10:35,000 --> 00:10:36,000 ¿El problema cuál es? 100 00:10:36,000 --> 00:10:41,000 Que si pongo una comilla aquí, me cierra esta comilla aquí y explota. 101 00:10:42,000 --> 00:10:44,000 Porque ahora tengo una comilla perdida por ahí. 102 00:10:44,000 --> 00:10:45,000 ¿Cómo pongo una comilla? 103 00:10:49,000 --> 00:10:50,000 Así. 104 00:10:51,000 --> 00:10:54,000 ¿Os acordáis? Lo hablamos la semana pasada del carácter de escape. 105 00:10:55,000 --> 00:11:00,000 Esto me está diciendo, lo que viene después, no lo consideres como un comillas, 106 00:11:00,000 --> 00:11:03,000 sino como un carácter especial, que resulta ser una comilla. 107 00:11:04,000 --> 00:11:08,000 Esta de aquí es una comilla dentro de un string. 108 00:11:09,000 --> 00:11:13,000 Esta comilla de aquí no se entiende como que cierra esta, 109 00:11:13,000 --> 00:11:17,000 sino se entiende como que es el carácter comilla que va dentro de aquí. 110 00:11:18,000 --> 00:11:20,000 Y luego pongo una también. 111 00:11:26,000 --> 00:11:27,000 Ahí. 112 00:11:27,000 --> 00:11:29,000 Barra, barra, para que aparezca una barra. 113 00:11:29,000 --> 00:11:30,000 Así debería funcionar. 114 00:11:31,000 --> 00:11:32,000 Vamos a ver si funciona. 115 00:11:33,000 --> 00:11:35,000 Es texto que contiene 5 caracteres. 116 00:11:35,000 --> 00:11:36,000 Funciona. 117 00:11:36,000 --> 00:11:37,000 ¿Verdad? 118 00:11:37,000 --> 00:11:41,000 Puedo irme tranquilamente a casa y con un 10. 119 00:11:42,000 --> 00:11:43,000 ¿Sí o no? 120 00:11:43,000 --> 00:11:44,000 Sí. 121 00:11:44,000 --> 00:11:45,000 ¿No? 122 00:11:45,000 --> 00:11:47,000 Entonces, si yo pongo un... 123 00:11:48,000 --> 00:11:50,000 Que claramente es más grande que texto. 124 00:11:51,000 --> 00:11:53,000 Le pasa lo mismo del ejercicio 5. 125 00:11:54,000 --> 00:11:59,000 O sea, como estoy utilizando el espacio para que haga mi comparación, 126 00:12:00,000 --> 00:12:04,000 comparará todas las palabras, excepto la última. 127 00:12:04,000 --> 00:12:06,000 Como antes, ¿os acordáis cuando contaba las palabras, 128 00:12:06,000 --> 00:12:09,000 la última no me la contaba porque no había el espacio al final? 129 00:12:09,000 --> 00:12:10,000 Pues aquí es lo mismo. 130 00:12:10,000 --> 00:12:13,000 Para que esto funcionara, debería tener un carácter especial. 131 00:12:14,000 --> 00:12:15,000 ¿Verdad? 132 00:12:15,000 --> 00:12:17,000 La última no me la contaba porque no había el espacio al final. 133 00:12:18,000 --> 00:12:19,000 Pues aquí es lo mismo. 134 00:12:19,000 --> 00:12:21,000 Para que esto funcionara, debería poner un espacio al final. 135 00:12:22,000 --> 00:12:24,000 Con el espacio al final, cuando pilla este espacio, 136 00:12:24,000 --> 00:12:26,000 considera esta palabra de aquí y la compara. 137 00:12:27,000 --> 00:12:28,000 Así me debería funcionar. 138 00:12:31,000 --> 00:12:32,000 ¿Sí? 139 00:12:32,000 --> 00:12:36,000 Pero, asumiendo que no se suele poner un espacio al final, 140 00:12:38,000 --> 00:12:42,000 lo que quedaría es, al final, cuando salgo aquí, 141 00:12:43,000 --> 00:12:46,000 yo en actual, cuando salgo de, perdóname, 142 00:12:46,000 --> 00:12:49,000 este for de aquí, cuando salgo de este for, 143 00:12:50,000 --> 00:12:54,000 en teoría, en actual, tengo dentro la última palabra que he leído. 144 00:12:55,000 --> 00:12:59,000 Entonces debería volver a hacer esto una última vez. 145 00:12:59,000 --> 00:13:00,000 ¿Sí? 146 00:13:01,000 --> 00:13:05,000 Entonces ahora, me funciona hasta si no tiene el espacio al final. 147 00:13:09,000 --> 00:13:12,000 Ahora, aquí lo que debería hacer es que este texto, 148 00:13:12,000 --> 00:13:15,000 en vez de mirarlo, en vez de escribirlo aquí, 149 00:13:15,000 --> 00:13:19,000 lo mirara directamente desde el teclado, etcétera, etcétera. 150 00:13:19,000 --> 00:13:22,000 Pero, esto ya lo hemos hecho antes en el tutorial, 151 00:13:22,000 --> 00:13:24,000 en el vídeo anterior, 152 00:13:25,000 --> 00:13:27,000 desde el teclado, etcétera, etcétera. 153 00:13:27,000 --> 00:13:30,000 Pero, esto ya lo hemos hecho antes en el ejercicio 5, 154 00:13:30,000 --> 00:13:32,000 es igual, para leer una frase. 155 00:13:32,000 --> 00:13:35,000 Por lo tanto, os remando a ese ejercicio para mirarlo. 156 00:13:36,000 --> 00:13:37,000 ¿Vale? 157 00:13:37,000 --> 00:13:38,000 En realidad, lo podría copiar. 158 00:13:40,000 --> 00:13:41,000 Copio esto. 159 00:13:48,000 --> 00:13:49,000 Y ya está. 160 00:13:50,000 --> 00:13:54,000 Escribí una frase, etcétera, etcétera, etcétera, etcétera. 161 00:13:55,000 --> 00:13:58,000 Y me dice que esas dos dudas y dudas, 162 00:13:58,000 --> 00:14:01,000 que tiene 12 caracteres, es la más grande de todas. 163 00:14:01,000 --> 00:14:02,000 ¿Vale? 164 00:14:02,000 --> 00:14:03,000 ¿Dudas?