elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con problema de reloj en java!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con problema de reloj en java!  (Leído 3,733 veces)
robertoht

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Ayuda con problema de reloj en java!
« en: 18 Junio 2015, 06:05 am »

Alguien me puede ayudar a resolver este ejercicio! Me urge un poco. :P

Cree un método llamado tipoHora que valide diferentes horas según un atributo
entero. Que dado su valor imprima si es madrugada mañana, mediodía,
tarde:

◦ 00:01 a 05:59 madrugada (el valor sería de 1 a 559)
◦ 06:00 a 11:59 mañana (el valor sería de 600 a 1159)
◦ 12:00 Medio día (el valor sería de 1200)
◦ 12:01 a 17:59 tarde (el valor sería de 1201 a 1759)
◦ 18:00 a 11:59 noche (el valor sería de 1800 a 2359)
◦ 24:00 Media noche (el valor sería de 2400)
◦ Cualquier otro valor da error.

El inicio del método sería:
public void tipoHora(int hora) {
//… acá va su código
}

Debe validar que los minutos no estén entre 60 y 99 si es así debe desplegar un error
(por ejemplo 470 es un error).

----------------------------------------------------------------------------------------------
Esto es lo que llevo por ahora, pero la parte de los minutos no se como hacerla. Creo que se hace con el operador módulo, pero no se como se hace.


Código
  1. public void tipoHora(int hora) {
  2.  
  3. if (hora >= 1 && hora <= 559) {
  4. System.out.println("Es la Madrugada!!");
  5. } else {
  6.  
  7. if (hora >= 600 && hora <= 1159) {
  8. System.out.println("Es de Mañana!!");
  9. } else {
  10. if (hora == 1200) {
  11. System.out.println("Es Medio Dia!!");
  12. } else {
  13. if (hora >= 1201 && hora <= 1759) {
  14. System.out.println("Es la Tarde!!");
  15. } else {
  16. if (hora >= 1800 && hora <= 2359) {
  17. System.out.println("Es la Noche!!");
  18. } else {
  19. if (hora == 2400) {
  20. System.out.println("Es la Media Noche!!");
  21. } else {
  22. if (hora >= 2400) {
  23. System.out.println("ERROR!!");
  24. } else {
  25.  
  26. }
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35.  
Y lo llamo desde mi main asi

ejemploramdon rt = new ejemploramdon();
rt.ejemplo(aqui se pone la hora);


« Última modificación: 18 Junio 2015, 23:48 pm por robertoht » En línea

3n31ch


Desconectado Desconectado

Mensajes: 445


Grandes conocimientos engendran grandes dudas


Ver Perfil
Re: Ayuda con problema de reloj en java!
« Respuesta #1 en: 18 Junio 2015, 12:19 pm »

Hola amigo. Primero, te explico.

Antes de todo, al publicar en este foro algún código, debes utilizar las etiquetas GeShi, justo cuando publicas tu código hay un listbox que dice por defecto GeShi, al cliquearlo te aparecerán muchos lenguajes. En este caso seleccionas Java y entre medio de lo que te aparezca pones tu código.

En segunda, por favor, pon correctamente el indentado, porque o si no hace difícil leer el codigo.

Primero, creo que tienes mal puesto un signo llave, verificarlo, antes de continuar.
En segunda, tu procedimiento, aunque efectivo, es el inadecuado. Cuando requieras hacer if "exclusivos" lo adecuado no es poner un if dentro del else, sino, hacer lo siguiente:
Código
  1.        if (hora >= 1 && hora <= 599){
  2.            System.out.println("Es la Madrugada!!");
  3.        } else if(hora >= 600 && hora <= 1159){
  4.            System.out.println("Es de Mañana!!");
  5.        }
  6.  

Tu código quedaría algo así:

Código
  1.    public void tipoHora(int hora) {
  2.        if (hora >= 1 && hora <= 599){
  3.            System.out.println("Es la Madrugada!!");
  4.        } else if(hora >= 600 && hora <= 1159) {
  5.            System.out.println("Es de Mañana!!");
  6.        } else if(hora == 1200) {
  7.            System.out.println("Es Medio Dia!!");
  8.        } else if(hora >= 1201 && hora <= 1759) {
  9.            System.out.println("Es la Tarde!!");
  10.        } else if(hora >= 1800 && hora <= 2359) {
  11.            System.out.println("Es la Noche!!");
  12.        } else if(hora == 2400) {
  13.            System.out.println("Es la Media Noche!!");
  14.        }
  15.    }

Bueno, una vez ya hemos arreglado eso, el procedimiento puede divergir, pero yo prefiero validar antes que nada, así que inicialmente validaremos que el valor ingresado no sea ni menor que 0, ni mayor que 2400

Código
  1.        if(hora > 2400 || hora < 0){
  2.            System.out.println("Error. La hora no puede ser menor a 0 o mayor a 2400");
  3.        } else if (hora >= 1 && hora <= 599){ /* Lo unimos a lo anterior ...*/

Esto lo unimos a lo anterior.

Bueno, ahora tenemos que validar que los  ultimos dos digitos no sean ni mayor o igual a 60.

Para extraer los dos últimos dígitos, lo haces con el resto o modulo - como bien dices -.

hora % 100 = a los dos últimos decimales. Si no lo entiendes, ejecuta la operación manualmente y te darás cuenta del porque.

ahora a ese resultado le agregamos que los últimos dos dígitos si son mayor o igual a 60 se lanza un error.

Código
  1.        if(hora % 100 >= 60){
  2.            System.out.println("Error. Los minutos no pueden ser mayor o igual a 60");
  3.        }
  4.  

Bueno, eso lo unes a lo anterior (en mi caso, lo ordene un poco) y obtienes lo siguiente:


Código
  1. public void tipoHora(int hora) {
  2.        if(hora > 2400 || hora < 0){ /* Primero valido que no sea menor a 0 o mayor a 2400 */
  3.            System.out.println("Error. La hora no puede ser menor a 0 o mayor a 2400");
  4.        } else if(hora % 100 >= 60){ /* Luego valido el minutero */
  5.            System.out.println("Error. Los minutos no pueden ser mayor o igual a 60");
  6.        } else if (hora >= 1 && hora <= 599){
  7.            System.out.println("Es la Madrugada!!");
  8.        } else if(hora >= 600 && hora <= 1159) {
  9.            System.out.println("Es de Mañana!!");
  10.        } else if(hora == 1200) {
  11.            System.out.println("Es Medio Dia!!");
  12.        } else if(hora >= 1201 && hora <= 1759) {
  13.            System.out.println("Es la Tarde!!");
  14.        } else if(hora >= 1800 && hora <= 2359) {
  15.            System.out.println("Es la Noche!!");
  16.        } else if(hora == 2400 || hora == 0) {
  17.            System.out.println("Es la Media Noche!!");
  18.        }
  19.    }
  20.  

Y ya esta terminado. Recuerda modificar tu mensaje y agregar las etiquetas para el codigo Java.

Por cierto, ve bien como estas usando tu método, porque no creo que esa sea la forma adecuada de hacerlo. Suerte. Cualquier pregunta, hazla.


« Última modificación: 18 Junio 2015, 12:22 pm por Nac-ho » En línea

robertoht

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Ayuda con problema de reloj en java!
« Respuesta #2 en: 19 Junio 2015, 00:14 am »

Man de verdad muchas gracias por la ayuda. Ya corregí lo del GeSDhi.
Y sorry por no escribir bien, apenas es mi primer cuatri de carrera lo estoy empezando, hay cosas que no me han explicado.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[java] codigo fuente sencillo para reloj analogico
Java
strike-maXter 4 29,994 Último mensaje 25 Enero 2005, 21:30 pm
por strike-maXter
Programar un reloj con alarma en Java pero residente en memoria
Java
Nabucodonosor 2 12,057 Último mensaje 31 Agosto 2006, 04:46 am
por CA
Problema con el reloj de mi pC
Dudas Generales
sambigote 2 4,828 Último mensaje 4 Septiembre 2010, 18:28 pm
por JuanRaGD
Problema reloj en un label
.NET (C#, VB.NET, ASP)
_CrisiS_ 2 2,564 Último mensaje 8 Diciembre 2010, 21:02 pm
por _CrisiS_
[AYUDA][Problema] Cargar imagenes en Java (soy nuevo en Java)
Java
Noxware 3 4,097 Último mensaje 14 Septiembre 2014, 19:39 pm
por Noxware
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines