1 00:00:01,649 --> 00:00:17,149 Hola a todos. Este es el segundo ejercicio del examen. Creía que creáis una calculadora. Simplemente era para utilizar una interfaz gráfica que ayudó al empleado a una tienda a calcular el precio de venta de un artículo. 2 00:00:17,149 --> 00:00:26,429 Y, importante, deberá contener los componentes necesarios para introducir cuatro datos, precio de un artículo, unidad de descuento e IVA. 3 00:00:26,530 --> 00:00:35,469 Y también tendrá un botón calcular, que al presionarlo mostrará en un JLABEL el precio final, tras aplicar el descuento y luego el IVA. 4 00:00:35,670 --> 00:00:37,649 Esto es una risa, lo del orden, pero bueno. 5 00:00:38,170 --> 00:00:41,149 Y luego comprobar que los datos sean válidos y manejar las posibles excepciones. 6 00:00:43,229 --> 00:00:44,909 Interfaz sencilla y fácil de utilizar. 7 00:00:44,909 --> 00:00:48,670 bien, esta es la calculadora de Alejandro 8 00:00:48,670 --> 00:00:51,469 voy a darle a run file 9 00:00:51,469 --> 00:00:55,799 vale, si yo pongo 10 00:00:55,799 --> 00:00:59,060 lo que sea 11 00:00:59,060 --> 00:01:02,240 10 artículos, o sea 10 del precio 12 00:01:02,240 --> 00:01:05,400 las unidades, el 10% 13 00:01:05,400 --> 00:01:07,519 y el 10 de IVA 14 00:01:07,519 --> 00:01:09,719 vale, y le doy a calcular 15 00:01:09,719 --> 00:01:13,099 me muestra aquí el precio, 19,80 16 00:01:13,099 --> 00:01:15,620 si yo pongo una letra 17 00:01:15,620 --> 00:01:20,159 me dice alerta debe introducir un número válido 18 00:01:20,159 --> 00:01:23,120 y si no pongo nada en algún campo 19 00:01:23,120 --> 00:01:28,079 me dice lo mismo, alerta debe introducir un número válido 20 00:01:28,079 --> 00:01:31,420 vamos a ver el código para que veáis como lo hace 21 00:01:31,420 --> 00:01:35,980 bien, en el explorador vemos que Alejandro ha cambiado los nombres 22 00:01:35,980 --> 00:01:38,840 de los botones y de los textfield 23 00:01:38,840 --> 00:01:43,939 se llama jtextfield descuento, jtextfield precio 24 00:01:43,939 --> 00:01:51,540 Bueno, aquí se le ha pasado un poco de mano, me estoy dando cuenta ahora. 25 00:01:51,540 --> 00:01:58,500 Pero sí que tiene el JButton Calcula y aquí debajo, que no los veía, los JTextField. 26 00:01:58,500 --> 00:02:03,540 Me dijo que se le había olvidado cambiar el nombre a los Labels. 27 00:02:03,540 --> 00:02:15,439 Lo primero, Alejandro va definiendo variables dobles en las que guardar el precio, el descuento, 28 00:02:15,439 --> 00:02:21,620 el IVA y las unidades y ha hecho bien en llamarlo igual a la variable que al nombre del componente 29 00:02:21,620 --> 00:02:24,699 y hace un GETTEXT y hace un PARSE para pasarlo a doble. 30 00:02:24,699 --> 00:02:31,520 ¿Qué está bien hecho esto, NUMBER FORMAT EXCEPTION? 31 00:02:31,520 --> 00:02:51,009 Si yo me voy al parse double y os fijáis, este debería devolver un null pointer exception 32 00:02:51,009 --> 00:02:58,490 si la cadena es vacía, el string, y un number format exception si el string no se puede 33 00:02:58,490 --> 00:03:17,550 convertir en un doble. Entonces, el null pointer y el number format. Aquí los veis, el null pointer cuando la cadena está vacía y el number format cuando el número no es válido, no se puede parsear. 34 00:03:17,550 --> 00:03:23,449 creo que es por el orden, pero si creo que si cambiando el orden a lo mejor funcionaba bien 35 00:03:23,449 --> 00:03:27,830 estoy viendo porque no... voy a parar un momento el vídeo 36 00:03:27,830 --> 00:03:36,189 pues he cambiado el orden para que primero estuviera el null pointer excepción y luego el number forma de excepción 37 00:03:36,189 --> 00:03:41,590 pero sigue dando el mismo error, alerta y va a introducir un número válido 38 00:03:41,590 --> 00:03:45,490 no el mismo error, el mismo mensaje, se salta el null pointer excepción 39 00:03:45,490 --> 00:03:47,250 cosa que habría que averiguar por qué 40 00:03:47,250 --> 00:03:50,370 puede que sea porque los jtexfield 41 00:03:50,370 --> 00:03:52,110 tengan por defecto 42 00:03:52,110 --> 00:03:54,169 la cadena vacía, no la cadena null 43 00:03:54,169 --> 00:03:55,069 que es diferente 44 00:03:55,069 --> 00:03:58,590 eso habría que comprobarlo 45 00:03:58,590 --> 00:04:00,150 el código tendría que hacerlo 46 00:04:00,150 --> 00:04:01,590 bien, hace el parse 47 00:04:01,590 --> 00:04:04,310 y inicialmente pone el resultado total 48 00:04:04,310 --> 00:04:05,870 a cero 49 00:04:05,870 --> 00:04:08,310 y nada 50 00:04:08,310 --> 00:04:10,110 multiplica, va usando la misma 51 00:04:10,110 --> 00:04:11,289 reutilizando la misma 52 00:04:11,289 --> 00:04:14,689 la misma variable todo el rato 53 00:04:15,150 --> 00:04:24,730 Entonces multiplica precio por unidades y luego a lo que tenía resultado total le resta el resultado total por el descuento entre 100. 54 00:04:24,889 --> 00:04:28,550 Así que ahora mismo en este resultado total ya tiene el descuento aplicado. 55 00:04:29,129 --> 00:04:31,449 Y a eso que le ha quedado le suma el IVA. 56 00:04:31,449 --> 00:04:38,990 ¿Cómo calcula el IVA? Multiplicando lo que tenía antes que era con el descuento por IVA entre 100. 57 00:04:39,089 --> 00:04:41,569 Así que los cálculos son perfectos. 58 00:04:41,569 --> 00:04:56,529 Yo recomendaría cambiar el nombre de las variables, por ejemplo, llamarle precio todas unidades y a esto llamarle, por ejemplo, precio con descuento o base, no sé, pero está bien, ¿vale? 59 00:04:56,649 --> 00:05:08,689 Así que es correcto hacer los cálculos bien e insisto en que el IVA se aplica una vez hecho el descuento. 60 00:05:08,689 --> 00:05:13,689 Se podría aplicar al revés y no pasaría nada, creo, o sea, ya estoy muy cansada. 61 00:05:14,310 --> 00:05:16,850 Eso, ya lo tenéis, este es el ejercicio y está bien. 62 00:05:17,750 --> 00:05:20,129 Habría que controlar mejor las excepciones. 63 00:05:20,709 --> 00:05:24,129 He visto compañeros que no controlaban las excepciones.