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:
if (hora >= 1 && hora <= 599){
System.
out.
println("Es la Madrugada!!"); } else if(hora >= 600 && hora <= 1159){
System.
out.
println("Es de Mañana!!"); }
Tu código quedaría algo así:
public void tipoHora(int hora) {
if (hora >= 1 && hora <= 599){
System.
out.
println("Es la Madrugada!!"); } else if(hora >= 600 && hora <= 1159) {
System.
out.
println("Es de Mañana!!"); } else if(hora == 1200) {
System.
out.
println("Es Medio Dia!!"); } else if(hora >= 1201 && hora <= 1759) {
System.
out.
println("Es la Tarde!!"); } else if(hora >= 1800 && hora <= 2359) {
System.
out.
println("Es la Noche!!"); } else if(hora == 2400) {
System.
out.
println("Es la Media Noche!!"); }
}
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
if(hora > 2400 || hora < 0){
System.
out.
println("Error. La hora no puede ser menor a 0 o mayor a 2400"); } 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.
if(hora % 100 >= 60){
System.
out.
println("Error. Los minutos no pueden ser mayor o igual a 60"); }
Bueno, eso lo unes a lo anterior (en mi caso, lo ordene un poco) y obtienes lo siguiente:
public void tipoHora(int hora) {
if(hora > 2400 || hora < 0){ /* Primero valido que no sea menor a 0 o mayor a 2400 */
System.
out.
println("Error. La hora no puede ser menor a 0 o mayor a 2400"); } else if(hora % 100 >= 60){ /* Luego valido el minutero */
System.
out.
println("Error. Los minutos no pueden ser mayor o igual a 60"); } else if (hora >= 1 && hora <= 599){
System.
out.
println("Es la Madrugada!!"); } else if(hora >= 600 && hora <= 1159) {
System.
out.
println("Es de Mañana!!"); } else if(hora == 1200) {
System.
out.
println("Es Medio Dia!!"); } else if(hora >= 1201 && hora <= 1759) {
System.
out.
println("Es la Tarde!!"); } else if(hora >= 1800 && hora <= 2359) {
System.
out.
println("Es la Noche!!"); } else if(hora == 2400 || hora == 0) {
System.
out.
println("Es la Media Noche!!"); }
}
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.