Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Ejercicio 1 (Tenerife) Examen 3ª Evaluación Programación - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Hola a todos, esta vez vídeo sin imágenes porque estoy muy cansada y no tengo buena cara.
00:00:01
Creo que es la cuarta vez que empiezo el vídeo, así que lo voy a intentar hacer lo más rápido posible
00:00:08
y de tirón porque no lo quiero editar. Así que si hablo rápido o me repito, lo siento.
00:00:15
En este vídeo voy a explicar cómo han hecho diferentes alumnos el programa número 1,
00:00:20
que es el que tenía que abrir un archivo
00:00:26
que se llama, bueno, miento
00:00:29
en tenerife.zip tenéis una carpeta comprimida
00:00:32
con varios archivos
00:00:35
os lo voy a enseñar
00:00:37
estos son los archivos
00:00:40
la carpeta tenerife tenía dos decenas de archivos
00:00:43
cada uno de ellos tiene el número del año
00:00:48
del 2000 al 2019 y .txt
00:00:51
Si hago doble clic podéis ver que el archivo tiene el aspecto que se ve en el examen.
00:00:55
Son como tres columnas, en la primera columna viene la fecha y luego un espacio, la temperatura máxima para esa fecha y luego otro espacio, este, y la temperatura mínima para esa fecha.
00:01:01
Se pide que el programa, el usuario, le introduzca uno de los valores y devuelva ciertos datos.
00:01:18
Queda dos. Pues tiene que devolver la temperatura máxima más alta y más baja, que es decir, de esta columna del centro.
00:01:24
Luego tiene que devolver la temperatura mínima más alta y más baja para la columna de la derecha.
00:01:32
Y luego tiene que devolver la media de las máximas, que es la del centro, y la media de las mínimas, que es la de la derecha.
00:01:39
Y luego tiene que hacer la media de las dos que acaba de deciros, de estas dos superiores.
00:01:47
Tiene que hacer la media, de la máxima media a la mínima media.
00:01:51
Y por último, tiene que decir cuál es la mayor diferencia de temperatura que hay en un mismo día.
00:01:56
Por ejemplo, en este primer día hay 6,70, diferencia de temperatura entre la máxima y la mínima.
00:02:02
Pues hay que buscar la mayor diferencia en algún día.
00:02:11
Vale, lo minimizo y os lo explico.
00:02:15
Vamos a ver varios ejemplos. El más fácil de entender voy a utilizar el de Raquel.
00:02:17
Raquel utiliza tres ArrayList que son de string, los tiene aquí, para guardar las fechas,
00:02:43
los mínimos y los máximos
00:02:50
y luego otras variables locales
00:02:52
para ir guardando datos temporales
00:02:54
fijaros que
00:02:56
Raquel abre el escáner
00:02:58
y le pregunta al usuario
00:03:00
cuál va a ser el archivo
00:03:02
y luego
00:03:04
a ver dónde está
00:03:05
simplemente pide
00:03:09
la ruta del archivo
00:03:12
en el caso de Raquel tengo que ponerle
00:03:13
la ruta donde está mi
00:03:16
archivo
00:03:18
y luego lo abre y no comprueba en ningún momento si el archivo existe
00:03:19
lo que podría dar un lugar a un error
00:03:25
luego voy a comprobar para que lo veáis
00:03:26
si yo le pongo aquí cualquier nombre
00:03:29
2001.txt
00:03:34
que no lo va a encontrar
00:03:37
y da una excepción y el programa acaba de mala manera
00:03:38
eso no es lo que tenía que hacer
00:03:42
tenían que acabar bien
00:03:44
se tenían que controlar las excepciones
00:03:45
entonces Raquel no lo controla
00:03:47
la solución en el programa
00:03:50
es que yo ponga
00:03:52
no puedo usar las teclas
00:03:54
porque si no paro la grabación
00:03:56
la solución es que yo ponga mi ruta
00:03:57
en este caso está una carpeta hacia arriba
00:03:59
o sea dos puntos
00:04:02
luego tenerife
00:04:04
la barra y por ejemplo
00:04:05
2001.txt
00:04:08
y me devuelve a temperatura
00:04:11
todo lo que he pedido excepto lo último
00:04:14
Tiene las máximas, las mínimas, las medias, la intermedia
00:04:16
Pero falta el valor máximo de diferencia
00:04:20
Entre máximo y mínimo diario
00:04:23
Bien, ¿qué hace el de Raquel?
00:04:25
Lee cada línea, la parte, la línea en una array de string
00:04:28
Aquí
00:04:32
Y la separa por los espacios
00:04:33
Y esa parts, que podría llamarse de otra manera
00:04:36
Que tiene las partes
00:04:39
En la posición 0 tiene la fecha
00:04:40
Que lo guarda en parte 1
00:04:43
Se podría haber llamado fecha
00:04:45
En Parts 1 tiene el máximo y en Parts 2, posición 2, tiene el mínimo.
00:04:46
Y por eso lo guarda en la lista de fechas de máximos y mínimos con el ADD.
00:04:53
Y luego directamente lo calcula.
00:04:59
La parte interesante del ejercicio de Raquel es que tiene una función CalcularMedia
00:05:05
que la utiliza tanto para calcular la media de la lista de los máximos
00:05:11
como calcular la media de la lista de los mínimos.
00:05:15
Y lo mismo ocurre con una función que se llama calcular máxima,
00:05:18
que la usa para máximos y para mínimos.
00:05:21
Y luego lo mismo una que tiene calcular mínimo.
00:05:25
Entonces, ¿qué me gusta del ejercicio de Raquel?
00:05:28
Que ha reutilizado la misma función para máximos y para mínimos.
00:05:29
Y luego tiene aquí simplemente un cálculo en el que hace la suma de las dos medias,
00:05:33
La divide entre 2 y lo último que hace es imprimirlo y cerrar el fichero.
00:05:38
Vamos a ver cómo son las funciones.
00:05:47
Fijaros, recibe un ArrayList de String, se llama CalcularMedia.
00:05:49
No le importa si es el ArrayList de máximos o de mínimos.
00:05:54
Y vamos, podría hacerlo hasta con las flechas.
00:05:58
Entonces, empieza con los contadores a 0, el de la media está bien.
00:06:00
Para cada uno de los is, que se supone que son los strings que hay en la lista, hace un doble parse doble y lo convierte a doble.
00:06:06
Lo suma en el valor de la media y va contando las líneas.
00:06:17
Cuando termina, devuelve la media más el partido por el contador.
00:06:22
el problema es que tiene esto
00:06:26
que si alguno de los archivos tuviera un valor
00:06:30
que no pudiera pasarse a doble
00:06:33
porque yo podía haber puesto
00:06:34
archivos con errores en el examen
00:06:36
daría error
00:06:39
y el programa se quedaría colgado
00:06:40
hay que controlar
00:06:42
si se hace bien el parseo
00:06:44
aquí
00:06:46
calcular máxima
00:06:47
que está bien, que explica lo que recibe
00:06:50
que es una write list
00:06:52
y devuelve la máxima
00:06:54
bien, inconvenientes
00:06:56
que pone el máximo inicialmente a cero
00:06:59
no es buena idea del todo
00:07:01
porque
00:07:03
podrían ser temperaturas negativas
00:07:04
y entonces el máximo estaría saliendo mal
00:07:07
porque estaría guardando un cero
00:07:09
¿de acuerdo?
00:07:10
nada, funciona muy fácil
00:07:12
para cada i, que es un string que está en la lista
00:07:13
primero lo comparte
00:07:17
lo convierte a doble
00:07:18
lo guarda en la variable comprobar
00:07:21
y comprueba
00:07:23
si comprobar es mayor que el máximo
00:07:24
si es mayor, lo guarda como el nuevo máximo
00:07:26
asigna comprobar
00:07:29
y por último devuelve máximo
00:07:30
el calcular mínimo funciona exactamente igual
00:07:32
solo que está haciendo
00:07:35
comprobando si lo que lee
00:07:37
lo que ha parseado a doble
00:07:38
porque aquí lo parsea
00:07:40
lo coge del array list y lo convierte en doble
00:07:42
comprueba si es menor que el mínimo
00:07:45
si es menor que el mínimo
00:07:47
guarda esa variable comprobar
00:07:48
en el mínimo y por último lo devuelve
00:07:51
hasta aquí el de Raquel
00:07:53
que funciona y hace lo que pide
00:07:54
aunque no cubre ninguna excepción
00:07:56
ahora cierro el de Raquel
00:08:00
y vamos a ver el de María
00:08:04
que es muy diferente
00:08:06
el de María
00:08:08
cuando yo lo ejecuto
00:08:14
voy a ponerme donde está el programa principal
00:08:17
aquí
00:08:20
aquí tenéis como lo ponía inicialmente la ruta
00:08:21
que poner resources, doble barra, tenerife
00:08:26
doble barra y lo concatena
00:08:28
con lo que diga el usuario
00:08:30
que es el nombre del archivo
00:08:32
o ruta donde está
00:08:34
o sea, sería el nombre del archivo
00:08:35
¿de acuerdo? y no funciona
00:08:38
entonces lo he cambiado y he tenido que poner en Linux
00:08:40
resources barra
00:08:42
contraria, barra tenerife
00:08:44
y lo compate, es el único cambio que
00:08:46
he hecho, vale, lo voy a ejecutar
00:08:47
para que veáis que funciona
00:08:50
porque tiene una parte interesante
00:08:52
el de María
00:08:54
voy a ponerle un nombre de archivo
00:08:55
como he hecho antes con Raquel
00:08:58
que no exista
00:09:00
por ejemplo 200.txt
00:09:01
María me dice que el archivo no existe
00:09:04
que prueba de nuevo, no falla
00:09:08
me va pidiendo nombres de archivos hasta que existan
00:09:09
si yo le pongo 2001.txt
00:09:12
me devuelve los valores y termina
00:09:15
y me lo devuelve todo
00:09:18
lo que he pedido, máximos, mínimos
00:09:20
incluso cuál es el día
00:09:22
en el que hay mayor diferencia de temperaturas, que es este.
00:09:24
Esta parte no recuerdo si la he modificado yo o no, ya no me acuerdo.
00:09:31
Bien, el código, que no me quiero enrollar.
00:09:38
Vale, María tiene una función, tiene una particularidad, y es fijaros lo que devuelven sus métodos.
00:09:42
métodos. Devuelven a raíz de dobles, porque resulta que los métodos de María te devuelven
00:09:50
todo de una vez. Te devuelven el máximo, el mínimo y la media. El nombre no es muy
00:09:55
adecuado, que lo ha llamado GetMaximas. Yo le he cambiado el nombre haciendo unas pruebas.
00:10:01
Yo lo hubiera llamado... Mira, le voy a cambiar el nombre para que quede más claro. Vale,
00:10:05
ese refactor
00:10:11
y me estoy enrollando
00:10:13
yo lo llamaría getMax
00:10:14
min
00:10:16
average
00:10:18
¿por qué?
00:10:20
porque devuelve las tres cosas
00:10:25
así como está haciendo yo pruebas y lo he puesto así
00:10:27
entonces que devuelve el máximo
00:10:29
y la mínima y la media
00:10:31
¿vale? pero solo lo hace
00:10:33
para las máximas, ojo
00:10:35
entonces inicialmente se crea
00:10:37
un array de tres en los que los valores por defecto
00:10:39
son 0, 100 y 0
00:10:41
donde la posición cero, como dice el comentario, sería la máxima.
00:10:43
Esta es la posición baja, el mínimo, por eso lo ponen a 100
00:10:50
porque supone que cualquier valor va a ser más pequeño que 100.
00:10:54
Y la media.
00:10:57
¿Cómo mejoraría yo esto?
00:11:00
Cogiendo el primer elemento de los que hay en la lista
00:11:02
y usándolo como máximo y mínimo temporal.
00:11:04
Aún así le funciona.
00:11:09
Porque como no hay valores extremos, no hay nada que esté a menos 50 o que esté a más 50.
00:11:11
Bueno, está bien, me he enrollado.
00:11:17
Va contando las líneas y para cada vector que tiene en la lista de entradas,
00:11:20
porque María guarda las tres cosas en la lista, guarda la fecha, el máximo y el mínimo.
00:11:26
Entonces el vector lo que tiene es las tres cosas.
00:11:33
Entonces la posición donde está la máxima es la 1.
00:11:36
así que lo parsea a un doble igual que ha hecho Raquel pero aquí solamente con la posición 1
00:11:38
lo guarda en leído y ahora comprueba si el leído es mayor que la temperatura que tenía guardada como máxima en este array
00:11:45
y luego comprueba si el leído es menor que la temperatura que tenía guardada como mínima
00:11:54
porque en la posición 1 está la mínima que sería aquí
00:12:01
y además lo suma en temperaturas máximas en el vector en la posición 2
00:12:04
así que va comprobando si es mayor que la máxima que es esta
00:12:10
mayor que la mínima que es esta
00:12:15
y lo va sumando a las medias
00:12:17
y cuando termina lo divide
00:12:19
lo que ha ido guardando aquí en la segunda posición del vector
00:12:22
en la segunda posición 2
00:12:26
es que lo divide lo que ha sumado entre el contador
00:12:27
y lo devuelve
00:12:30
Así que obtiene las tres cosas, máximo, mínimo y media.
00:12:31
¿Qué pasa? Que tiene una función muy similar, esta, que devuelve un array list, perdón, que recibe un array list con toda la lista de entradas y que devuelve un array de tres de dobles.
00:12:37
Y funciona exactamente igual, solo que en vez de mirar la posición uno de los vectores, si os acordáis, voy a poner esto, ella guarda en un vector las tres cosas.
00:12:48
entonces la posición 1 son los máximos
00:13:01
la posición 2 son las fechas
00:13:04
así que lo hace todo para la posición 2
00:13:06
así que coge lo que hay en la posición 2 de la entrada
00:13:09
para todas las entradas
00:13:12
lo pasea a doble
00:13:14
lo guarda en leído
00:13:16
y va comprobando si leído es mayor
00:13:18
que la posición 0
00:13:20
que es donde está la máxima
00:13:22
y si lo es lo guarda
00:13:24
en las temperaturas mínimas
00:13:26
yo llamaría valores mínimas
00:13:28
o datos para mínimas, no lo sé
00:13:32
y luego si leído es menor
00:13:34
lo guarda como mínima
00:13:36
y luego lo va sumando
00:13:37
en la posición del vector
00:13:38
donde guarda toda la suma
00:13:41
y una vez acabado
00:13:44
lo divide por las líneas que ha ido contando
00:13:45
pues eso se podía hacer
00:13:48
en una única función
00:13:50
y luego lo mismo
00:13:51
tiene esta otra función
00:13:53
que es interesante, que es la getDiferencia
00:13:56
que no lo había hecho raquel que hace coge la raíz y por ahora inicialmente la diferencia inicial
00:13:58
es cero va a pensar que tenemos una máxima y una mínima iguales no sabemos de qué fecha es así
00:14:06
esto entonces lo hizo no lo ha modificado es el original de maría entonces para cada vector con
00:14:12
los tres valores fecha mayor máxima y mínima que hay en la lista coge el de la posición 1 que es la
00:14:19
máxima, lo guarda en max, luego coge el de la posición 2, lo guarda en mínimo y comprueba
00:14:27
si el restar esos dos es mayor que la diferencia que había inicialmente, que es esta que había
00:14:34
guardado como cero. Si eso se cumple, entonces lo que va a hacer es que en diferencia mayor
00:14:40
guarda máximo menos en mínimo. Y como sabe la fecha que está en la posición cero, pues
00:14:45
la guarda. Guarda fecha diferencia igual a lo que hay en entrada 0. Así que va
00:14:55
guardando la diferencia y la fecha. Y cuando termina lo devuelve todo en un
00:15:00
string junto. Devuelve la diferencia, que es un doble con formato con dos decimales,
00:15:04
y la fecha, que es un string. Entonces, ¿cómo funciona su código principal?
00:15:11
Aquí tenemos el do while por el que puede estar leyendo archivos hasta que le das
00:15:18
un archivo válido que está guay y luego comprueba si el archivo no existe si el
00:15:23
archivo no existe saca un mensaje por la pantalla de error
00:15:29
cuando llegamos aquí es que se supone que ya el archivo existe así que hace un
00:15:36
try que es lo que no hacía raquel e intenta abrir un escáner con el nombre
00:15:41
del archivo y aquí te una raíz donde va guardando todos los datos entonces mientras haya líneas
00:15:47
coge la siguiente línea next line y con el método split lo separa por los espacios y eso lo guarda
00:15:58
en un vector que se llama entrada que es un vector string que inicialmente va a tener tres
00:16:04
inconvenientes que tiene esto
00:16:09
que podrían venir en el archivo
00:16:14
líneas incorrectas que no tuvieran
00:16:16
las dos temperaturas y no lo sabríamos
00:16:20
y eso no se está controlando
00:16:22
tendría que controlarse
00:16:24
cuando se calculan las máximas
00:16:26
y la mínima, debería hacer un try
00:16:28
para ver que no sale del vector
00:16:30
vale, cuando ha leído
00:16:32
la entrada, le añade a la raíz de entrada
00:16:34
y luego lo cierra
00:16:36
y aquí tiene sus variables donde va a guardar los valores
00:16:37
las máximas, las mínimas y llama sus funciones
00:16:41
al que obtiene máxima, mínima ya veréis para las máximas
00:16:44
luego la misma función pero que lo hace para las mínimas
00:16:48
y luego la media de temperaturas y demás
00:16:52
y lo imprime todo
00:16:54
y aquí tiene la excepción que solo tiene una
00:16:55
que es algo ha salido mal
00:16:58
y ahora voy a enseñar el que ha hecho Lucía
00:17:00
el que ha hecho Lucía
00:17:05
utiliza también dos ArrayList
00:17:12
solo dos, no tres, no tienen de las fechas
00:17:17
y guarda las temperaturas máximas y las mínimas
00:17:19
y también cuenta las líneas
00:17:23
y Lucía lo hace todo el rato con tres variables globales
00:17:25
entonces todos sus métodos usan esas variables
00:17:28
lo primero que hace es comprobar
00:17:32
cuál es la opción del usuario
00:17:34
introduce el año y si no está entre 2000 y 2019 te dice que el año está mal
00:17:36
te obliga a que pongas un año de 2000 a 2019 porque sabe que no existe el
00:17:43
archivo y leer archivo es un método que le llega el año y lo que hace es leerlo
00:17:48
inicialmente lucia lo tenía así pero a mí no me funciona en linux he tenido que
00:17:57
cambiar la ruta. Así que solo tengo que poner el año. Y lee el archivo y hace lo mismo.
00:18:01
Mientras haya líneas, va añadiendo las líneas que lee. Pero no lee toda la línea. Lucia
00:18:11
lee la fecha, que la tira, no la usa, como no la quiere para nada, simplemente la lee.
00:18:17
La primera palabra separada por un espacio. Luego aquí lee la máxima y la guarda en
00:18:22
máxima y aquí lee la mínima y la guarda en mínima pero las guarda como string y
00:18:27
además cuenta las líneas y dice que ha quitado líneas vacías porque le daba
00:18:32
error
00:18:37
cierra el lector y gestiona dos excepciones una que no encuentra la
00:18:40
excepción y luego cualquier otra por si cualquier otro tipo de problema hace una
00:18:46
excepción genérica. Y aquí pasa algo parecido.
00:18:50
Fijaros en este código de este método, que es un calcular temperatura máxima
00:18:59
superior. Y luego hay aquí otra, a ver si la veo,
00:19:04
calcular temperatura mínima superior, que son exactamente iguales. Recorre
00:19:12
un ArrayList y calcula cuál es el máximo y el mínimo. Lo que pasa es que como uso
00:19:19
variables globales, aquí lo hace para la lista de temperaturas máximas. Entonces para
00:19:24
cada string que está en temperaturas, comprueba si pasándolo a doble es mayor que la temperatura
00:19:28
máxima superior, que inicialmente la pone a cero, ¿vale? Y si es así, lo guarda y es
00:19:37
su nuevo máximo. Da todas las vueltas y devuelve el que ha guardado como máximo. Lo mismo
00:19:43
hace con los mínimos
00:19:48
va recorriendo y va guardando
00:19:50
el mínimo temporal
00:19:52
hasta que lo devuelve, pero es que funciona
00:19:54
igual el mínimo para los mínimos
00:19:56
estas funciones podían haberse
00:19:58
hecho reutilizado
00:20:00
como ha hecho
00:20:02
Raquel, reutilizar las funciones
00:20:04
pero claro, tenían que recibir como argumento la
00:20:06
raíz
00:20:08
y luego calcula
00:20:08
la media, que simplemente
00:20:12
lo recorre, pero llama
00:20:14
la variable global
00:20:16
y la media de las mínimas
00:20:17
y la intermedia
00:20:20
hace la media
00:20:25
y de las máximas ya hace la media de la mínima
00:20:27
que podía haber reutilizado
00:20:30
las funciones que ya tenía antes
00:20:32
para calcular la media
00:20:33
y no tener que volver a hacerlo
00:20:36
el código
00:20:37
y aquí lo mismo
00:20:38
calcula la diferencia en mayor temperatura
00:20:42
recorriendo las dos listas
00:20:44
a la vez
00:20:46
y va comparando cada uno de la lista
00:20:46
con el siguiente del otro lado de la lista
00:20:49
en el caso de Lucía
00:20:52
se asegura siempre que se leen
00:20:56
que siempre hay dos
00:20:57
porque como está haciendo
00:20:58
next y next al leer
00:21:01
aquí
00:21:03
aquí siempre lee el máximo
00:21:03
y luego lee el mínimo
00:21:08
si no pudiera hacer un leer
00:21:09
pues daría una excepción
00:21:12
así que aquí no va a llegar ese fallo, siempre va a tener dos.
00:21:14
¿Y cómo funciona? Pues hace un try en la que llama a leer archivo
00:21:19
y con el valor, el valor que recibe leer archivo es lo que sea leer opción usuario.
00:21:24
Este método devuelve el nombre del archivo, 2009 o 2017.
00:21:32
Hace un catch si ha habido un problema de number former exception y hace otro catch.
00:21:38
esas excepciones
00:21:44
si saltan el programa
00:21:47
no debería continuar
00:21:49
porque en el caso de Lucía
00:21:51
cuando hay un error
00:21:53
después de coger la excepción
00:21:54
imprime cosas porque puede imprimirlas
00:21:56
no sé si ahora voy a saber repetir el error
00:21:59
no, no voy a saber
00:22:01
no me acuerdo como lo conseguí
00:22:02
vale, y mi variante
00:22:05
que tiene un error
00:22:11
yo todavía no lo he conseguido arreglar
00:22:14
por eso lo del vídeo tardío
00:22:15
este es mi variante
00:22:16
vale
00:22:18
¿qué he variado?
00:22:22
pues primero que he añadido uno de lista fechas
00:22:24
para saber en qué fecha
00:22:26
es el día que
00:22:28
hay la mayor diferencia de temperaturas
00:22:30
he mantenido el leer
00:22:32
opción usuario
00:22:34
y
00:22:36
el file, vale, y aquí está la diferencia
00:22:37
yo he usado
00:22:40
he mantenido su código en el que se calcula
00:22:42
el cual es la máxima
00:22:45
Pero, le he cambiado el nombre, le he llamado CalcularTemperaturaMáxima y recibe una ArrayList.
00:22:48
Eso quiere decir que lo puedo hacer para la lista de máximas o para la lista de mínimas.
00:22:53
Lo primero que hace es comprobar si la lista no está vacía, por si acaso venía el archivo vacío.
00:22:58
Entonces, si la lista está vacía, va a lanzar una excepción de NullPointerExcepción,
00:23:03
porque me he encontrado algo apuntando un Null que yo no me lo esperaba, porque no debía estar vacío.
00:23:08
y por eso mi método puede lanzar un null pointer exception
00:23:15
si todo va bien, si no está vacío
00:23:19
tomo el primer elemento de la array list como máximo temporal
00:23:21
entonces le pido a la lista que me coja el get0
00:23:24
y eso lo guardo como mi lista se supone que es de dobles
00:23:28
pero me está dando error, ahí es donde me falla y todavía no he podido arreglarlo
00:23:34
entonces yo pongo la lista get0 que es un doble
00:23:38
lo guardo como temperatura máxima
00:23:40
Y ahora, para cada doble que está en mi lista, que se llama temperatura, compruebo si la temperatura es mayor que la máxima.
00:23:42
Si es mayor, pues la nueva temperatura máxima es temperatura.
00:23:50
Y lo devuelvo. Eso es el código de Lucía.
00:23:54
Solo he cambiado el argumento que recibe y la gestión de el que esté vacío y de cómo cojo el primero.
00:23:56
Ahora, tiene un calcular temperatura mínima que es exactamente igual.
00:24:06
recibo un ArrayList y puede devolver un null pointer exception, compruebo que no está vacío y
00:24:10
cojo el primer elemento de la lista como mínimo. Entonces tengo una variable que es temperatura
00:24:16
mínima, es temporal mientras doy vuelta y ahí lo que guardo es el get cero. Entonces para todos los
00:24:20
que hay en la lista, que eso incluye el cero, voy comprobando si la temperatura es menor que la
00:24:26
mínima. Si es así, lo machaco. Esto es lo que he quitado del código de Lucía y lo mismo he hecho
00:24:31
para la media que recibo una rey list entonces me va el mismo método para la media de las máximas
00:24:39
y la media de las mínimas y es igual compruebo si está vacío y luego las voy sumando y las divido
00:24:44
entre el tamaño de la lista porque le puedo preguntar a la lista cuántos elementos tiene
00:24:53
no me hace falta contarlos
00:24:58
y luego la temperatura intermedia
00:25:00
nada
00:25:04
como Lucía la tiene
00:25:07
la he mantenido
00:25:09
y solamente que en vez de hacer los cálculos
00:25:10
llamo a calcular temperatura media
00:25:12
de la lista 1
00:25:14
a calcular temperatura media de la lista 2
00:25:15
y lo divido entre 2
00:25:18
recibe lista 1 y lista 2 por argumentos
00:25:19
lo intento
00:25:22
y si algo no va bien
00:25:24
hago un catch de no poner excepción
00:25:26
porque calcular temperatura media
00:25:28
si lista está vacía
00:25:30
va a devolver un null pointer excepción
00:25:32
entonces al menos tengo una de las dos listas vacía
00:25:34
lo que hago es lanzar la excepción
00:25:37
al programa superior para que la gestione
00:25:38
y si todo va bien
00:25:40
pues devuelvo la media
00:25:42
y
00:25:43
vale
00:25:45
y calcular la diferencia
00:25:48
de mayor temperatura
00:25:49
aquí tengo que tener un error
00:25:52
y
00:25:55
porque Lucía ha hecho
00:25:56
un número de líneas
00:26:01
aquí lo voy a hacer
00:26:03
eso está mal hecho
00:26:04
debería hacerlo
00:26:05
con lista
00:26:10
punto 6
00:26:11
lista 1.6
00:26:14
como en principio
00:26:17
las dos tienen el mismo tamaño
00:26:18
si no le robo el que ha llegado antes
00:26:20
le pregunto a la lista 1
00:26:21
cuál es su tamaño
00:26:23
y mientras de I0
00:26:24
hay menor que el tamaño
00:26:27
calculo el valor de la lista 1 menos el valor de la lista 2
00:26:28
y si esa diferencia que acabo de calcular, calculada
00:26:35
es mayor que la diferencia temporal
00:26:40
pues entonces lo guardo
00:26:43
y me guardo en qué posición estoy
00:26:45
que estoy en la posición Y de la raíz
00:26:47
inicialmente pongo la diferencia a 0
00:26:49
entonces cuando termino de dar vueltas
00:26:53
devuelvo la diferencia mayor temporal
00:26:57
y lo concateno con el string del día
00:27:00
y obtengo la fecha
00:27:03
hago fechas.get con la posición temporal
00:27:05
hay algo que se me ha olvidado contar
00:27:09
o no sé si lo he contado
00:27:11
si se lo he contado
00:27:16
que tanto el máximo como el mínimo
00:27:17
cojo el primer elemento de la lista
00:27:19
no supongáis que vuelva a ser el máximo o el mínimo
00:27:20
excepto la media
00:27:24
que por defecto puedo dejar un 0
00:27:25
si se calcula y todas son cero, pues devolvería un cero o devolvería error.
00:27:28
Entonces, ¿qué hace? Hago un try, pero dentro del try he metido la lógica de leer archivo. Si todo
00:27:34
va bien, entonces me imprimirá el calcular temperatura máxima de las máximas, el de las
00:27:44
mínimas, y aquí voy llamando a todas las funciones. Y si hubiera un error, saltaría el catch. Puede
00:27:49
salta el catch en number format exception, cuando haya un problema con el formato o una excepción
00:27:55
general. Y ya está. Muchas gracias por atender. Espero que haya quedado claro que hay varias
00:28:03
maneras de hacerlo y que en todas habría que haber comprobado las excepciones, que no lo hemos comprobado casi.
00:28:11
- Valoración:
- Eres el primero. Inicia sesión para valorar el vídeo.
- 1
- 2
- 3
- 4
- 5
- Idioma/s:
- Autor/es:
- Cristina Moreno Ruiz
- Subido por:
- Cristina M.
- Licencia:
- Reconocimiento - Compartir igual
- Visualizaciones:
- 26
- Fecha:
- 2 de junio de 2022 - 2:22
- Visibilidad:
- Público
- Centro:
- IES LOPE DE VEGA
- Duración:
- 28′ 20″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1148x646 píxeles
- Tamaño:
- 190.76 MBytes
Para publicar comentarios debes entrar con tu nombre de usuario de EducaMadrid.
Comentarios
Este vídeo todavía no tiene comentarios. Sé el primero en comentar.