1 00:00:01,649 --> 00:00:07,250 Hola a todos. Este es el segundo ejercicio del examen. 2 00:00:07,509 --> 00:00:17,149 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. 3 00:00:17,910 --> 00:00:23,190 Y, importante, deberá contener los componentes necesarios para introducir cuatro datos. 4 00:00:23,489 --> 00:00:26,429 Precio de un artículo, unidad de descuento e IVA. 5 00:00:26,429 --> 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. 6 00:00:35,670 --> 00:00:37,670 Esto es una risa, lo del orden, pero bueno. 7 00:00:38,189 --> 00:00:41,429 Y luego comprobar que los datos sean válidos y se maneja las posibles excepciones. 8 00:00:43,250 --> 00:00:44,969 Interfaz sencilla y fácil de utilizar. 9 00:00:45,829 --> 00:00:48,609 Bien, esta es la calculadora de Alejandro. 10 00:00:50,030 --> 00:00:51,409 Voy a dar RAN5. 11 00:00:51,409 --> 00:00:55,869 si yo pongo 12 00:00:55,869 --> 00:00:59,070 lo que sea 13 00:00:59,070 --> 00:01:00,869 10 artículos 14 00:01:00,869 --> 00:01:02,270 10 de precio 15 00:01:02,270 --> 00:01:03,770 las unidades 16 00:01:03,770 --> 00:01:05,450 el 10% 17 00:01:05,450 --> 00:01:07,549 y el 10 de IVA 18 00:01:07,549 --> 00:01:09,730 y le doy a calcular 19 00:01:09,730 --> 00:01:12,010 me muestra aquí el precio 20 00:01:12,010 --> 00:01:13,109 19,80 21 00:01:13,109 --> 00:01:15,670 si yo pongo una letra 22 00:01:15,670 --> 00:01:18,069 me dice alerta 23 00:01:18,069 --> 00:01:20,189 debe introducir un número válido 24 00:01:20,189 --> 00:01:21,329 y si no pongo nada 25 00:01:21,329 --> 00:01:23,109 en algún campo 26 00:01:23,109 --> 00:01:25,170 me dice lo mismo 27 00:01:25,170 --> 00:01:26,969 alerta debe introducir un número 28 00:01:26,969 --> 00:01:29,349 válido, vamos a ver el código 29 00:01:29,349 --> 00:01:31,430 para que veáis como lo hace 30 00:01:31,430 --> 00:01:33,709 bien, en el explorador 31 00:01:33,709 --> 00:01:35,430 vemos que Alejandro ha cambiado 32 00:01:35,430 --> 00:01:37,750 los nombres de los botones 33 00:01:37,750 --> 00:01:38,849 y de los textfield 34 00:01:38,849 --> 00:01:41,010 se llama jtextfield descuento 35 00:01:41,010 --> 00:01:41,950 jtextfield 36 00:01:41,950 --> 00:01:44,030 precio 37 00:01:44,030 --> 00:01:46,870 aquí tiene que ser ya pasado un poco 38 00:01:46,870 --> 00:01:48,950 de mano, me estoy dando cuenta ahora 39 00:01:48,950 --> 00:01:51,549 pero 40 00:01:51,549 --> 00:01:53,670 sí que tiene el Jbutton 41 00:01:53,670 --> 00:01:55,709 Calcula y aquí 42 00:01:55,709 --> 00:01:57,790 debajo que no los veía, los JtextField 43 00:01:57,790 --> 00:01:59,489 me dijo que se le había olvidado 44 00:01:59,489 --> 00:02:01,209 cambiar el nombre a los 45 00:02:01,209 --> 00:02:01,810 Label 46 00:02:01,810 --> 00:02:05,349 aquí 47 00:02:05,349 --> 00:02:07,549 lo primero, Alejandro 48 00:02:07,549 --> 00:02:08,330 va definiendo 49 00:02:08,330 --> 00:02:11,150 variables 50 00:02:11,150 --> 00:02:13,650 dobles en las que guardar el precio 51 00:02:13,650 --> 00:02:15,710 el descuento, el IVA 52 00:02:15,710 --> 00:02:17,550 y las unidades y ha hecho bien en 53 00:02:17,550 --> 00:02:19,169 llamarlo igual a la variable 54 00:02:19,169 --> 00:02:21,530 que al nombre del componente 55 00:02:21,530 --> 00:02:26,449 y hace un get text y hace un parse para pasarlo al doble 56 00:02:26,449 --> 00:02:33,569 que está bien hecho esto number format exception si yo me voy al parse double 57 00:02:33,569 --> 00:02:36,650 dable perdón 58 00:02:36,710 --> 00:02:39,969 y os fijáis 59 00:02:43,270 --> 00:02:49,289 este debería devolver aquí está 60 00:02:49,289 --> 00:03:01,430 Un null pointer exception si la cadena es vacía, el string, y un number format exception si el string no se puede convertir en un doble, ¿vale? 61 00:03:01,430 --> 00:03:17,569 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. 62 00:03:17,569 --> 00:03:23,469 creo que es por el orden, pero si creo que si cambiando el orden a lo mejor funcionaba bien 63 00:03:23,469 --> 00:03:27,830 estoy viendo por qué no... voy a parar un momento el vídeo 64 00:03:27,830 --> 00:03:34,449 pues he cambiado el orden para que primero estuviera el null point de excepción 65 00:03:34,449 --> 00:03:36,189 y luego el number forma de excepción 66 00:03:36,189 --> 00:03:41,610 pero sigue dando el mismo error, alerta debe introducir un número válido 67 00:03:41,610 --> 00:03:43,229 no el mismo error, el mismo mensaje 68 00:03:43,229 --> 00:03:45,509 se salta el null point de excepción 69 00:03:45,509 --> 00:03:47,250 cosa que habría que averiguar por qué 70 00:03:47,250 --> 00:03:50,370 puede que sea porque los JTexfield 71 00:03:50,370 --> 00:03:52,110 tengan por defecto 72 00:03:52,110 --> 00:03:54,169 la cadena vacía, no la cadena null 73 00:03:54,169 --> 00:03:55,090 que es diferente 74 00:03:55,090 --> 00:03:58,590 eso habría que comprobarlo 75 00:03:58,590 --> 00:04:00,150 el código tendría que hacerlo 76 00:04:00,150 --> 00:04:01,590 bien, hace el parse 77 00:04:01,590 --> 00:04:04,330 y inicialmente pone el resultado total 78 00:04:04,330 --> 00:04:05,870 a cero 79 00:04:05,870 --> 00:04:08,310 y nada 80 00:04:08,310 --> 00:04:10,110 multiplica, va usando la misma 81 00:04:10,110 --> 00:04:11,289 reutilizando la misma 82 00:04:11,289 --> 00:04:14,710 la misma variable todo el rato 83 00:04:14,710 --> 00:04:24,750 entonces multiplica precio por unidades y luego a lo que tenía resultado total le resta el resultado total por el descuento entre 100 84 00:04:24,750 --> 00:04:28,589 así que ahora mismo en este resultado total ya tiene el descuento aplicado 85 00:04:28,589 --> 00:04:32,569 y a eso que le ha quedado le suma el IVA, ¿cómo calcula el IVA? 86 00:04:33,569 --> 00:04:38,990 multiplicando lo que tenía antes que era con el descuento por IVA entre 100 87 00:04:38,990 --> 00:04:41,589 así que los cálculos son perfectos 88 00:04:41,589 --> 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? 89 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. 90 00:05:08,689 --> 00:05:11,089 Se podría aplicar al revés y no pasaría nada 91 00:05:11,089 --> 00:05:13,730 Creo, o sea, ya estoy muy cansada 92 00:05:13,730 --> 00:05:15,509 Eso, ya lo tenéis 93 00:05:15,509 --> 00:05:16,910 Este es el ejercicio y está bien 94 00:05:16,910 --> 00:05:20,149 Habría que controlar mejor las excepciones 95 00:05:20,149 --> 00:05:24,149 He visto compañeros que no controlaban las excepciones