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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas  (Leído 8,251 veces)
Unrealjose

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas
« en: 6 Abril 2017, 19:33 pm »

Buenas a todos,soy nuevo tanto en este foro como en la programacion(apenas se cuatro cosas mal contadas).
Estoy aprendiendo Java con un libro,al final de cada capitulo te da unos cuantos ejercicios resueltos y ejercicios para que lo resolvamos y estoy teniendo problemas con uno de ellos.

El ejercicio me pide que ingrese una hora/minutos/segundo(tiene que ser correcto,es decir,no vale 30 horas o 72 min) y despues que ingrese un numero(en segundos) que se sumara a la hora dando una hora correcta(en horas/minutos/segundos).
Pero no consigo hacerlo,me da muchos problemas.

Vengo aqui para ver si alguien me puede ayudar a hacerlo(a ser posible explicandome mis errores y asi se que es lo que no debo hacer cuando tenga que volver a hacer algo parecido).

Dejo el codigo que llevo echo abajo(echo en Eclipse),y antes de nada dejar claro que solo se hacer condicionales,bucles y funciones y por el capitulo en el que me dieron el ejercicio,se deberia poder hacer solo con condicionales y bucles,pongo esto mas que nada porque todavia no tengo ni idea ni de tablas ni de clases ni de nada mas complejo que condicionales,bucles y funciones.

Muchas gracias de antemano.

Código
  1. package Capitulo3.SinTerminar;
  2. import java.util.Scanner;
  3. public class Ejercicio2 {
  4. //El programa debe pedir una hora ingresando Horas, Minutos y Segundos y depsues sumarle X segundos
  5. public static void main(String[]args){
  6. Scanner sc=new Scanner(System.in);
  7. int h,m,s,num;
  8. boolean h1=true,h2=true,m1=true,m2=true,s1=true,s2=true;
  9. do{
  10. System.out.print("Ingrese la hora(00-23): ");
  11. h=sc.nextInt();
  12. if(h<=23){h1=true;}else{h1=false;}
  13. if(h>=00){h2=true;}else{h2=false;}
  14. }while(h1!=true||h2!=true);
  15. do{
  16. System.out.print("Ingrese los minutos(00-59): ");
  17. m=sc.nextInt();
  18. if(m<=59){m1=true;}else{m1=false;}
  19. if(m>=00){m2=true;}else{m2=false;}
  20. }while(m1!=true||m2!=true);
  21. do{
  22. System.out.print("Ingrese los segundos(00-59): ");
  23. s=sc.nextInt();
  24. if(s<=59){s1=true;}else{s1=false;}
  25. if(s>=00){s2=true;}else{s2=false;}
  26. }while(s1!=true||s2!=true);
  27. System.out.println("Son las "+h+":"+m+":"+s+".");
  28. System.out.print("Ingrese el numero de segundos en los que quieres incrementar la hora:");
  29. num=sc.nextInt();
  30. int a,b,c,d,e;
  31. a=s*3600;
  32. b=m*60;
  33. c=s;
  34. d=a+b+c;
  35. e=d+num;
  36. h=(int)e/3600;
  37. m=(int)(e-(e/3600))/60;
  38. s=(int)(e-(m*60));
  39. System.out.print("La nueva hora es: "+h+":"+m+":"+s);
  40. }
  41. }[/code=java]
  42.  
  43. pd: La unica forma que tengo para asegurarme que al insertar un numero sea valido(es decir,entre 0 y 23 para horas y 0-59 para minutos y segundos) es con el codigo que hay en las lineas  9-14;15-20;21-26.
  44. Mi duda respecto a ese codigo es si hay otra forma,porque este lo veo muy,muy lioso,me saio despues de un buen rato de probar combinaciones raras.


En línea

“La verdad es siempre revolucionaria.”  ― Lenin
Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas
« Respuesta #1 en: 6 Abril 2017, 20:32 pm »

No necesitas dos variables buleanas adicionales para preguntar sobre la hora, minuto o segundo...
Una expresión puede dar como resultado un valor buleano, sin necesidad de que hayas declarado una variable de ese tipo y asignado un valor...
Desde el momento en que el usuario introduce un valor y este se almacena y/o extrae en 'h' (por ejemplo), basta 'h', para saber:
 si (h es menor que 0) Ó (si h es mayor que 23) ...esto es una expresión y devolverá  TRUE o FALSE...

Por tanto se puede simplificar y aclarar el código, preguntando así al bucle:

Hacer
 ....
Mientras (h>23) ó (h<0)


p.d.:
El resto son matemáticas sencillas (sumar, multiplicar, restar, etc..), que deberias resolver por tí mismo, si no da correcto...


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas
« Respuesta #2 en: 6 Abril 2017, 20:39 pm »

yo personalmente recomiendo, convierte a tiempo unix que son segundos, sumas y restas sin complicaciones y conviertes de nuevo de tiempo unix a fecha
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Unrealjose

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Re: Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas
« Respuesta #3 en: 6 Abril 2017, 20:44 pm »

Citar
No necesitas dos variables buleanas adicionales para preguntar sobre la hora, minuto o segundo...
Una expresión puede dar como resultado un valor buleano, sin necesidad de que hayas declarado una variable de ese tipo y asignado un valor...
Desde el momento en que el usuario introduce un valor y este se almacena y/o extrae en 'h' (por ejemplo), basta 'h', para saber:
 si (h es menor que 0) Ó (si h es mayor que 23) ...esto es una expresión y devolverá  TRUE o FALSE...

Por tanto se puede simplificar y aclarar el código, preguntando así al bucle:

Hacer
 ....
Mientras (h>23) ó (h<0)

p.d.:
El resto son matemáticas sencillas (sumar, multiplicar, restar, etc..), que deberias resolver por tí mismo, si no da correcto...

Muchas gracias NEBIRE,lo he probado y funciona a la perfeccion y sin tener que calentarse tanto la cabeza como para hacer lo que hize xD
En línea

“La verdad es siempre revolucionaria.”  ― Lenin
Unrealjose

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Re: Ayuda con un codigo Java respecto a horas/minutos/segundos y sumas con ellas
« Respuesta #4 en: 6 Abril 2017, 20:45 pm »

yo personalmente recomiendo, convierte a tiempo unix que son segundos, sumas y restas sin complicaciones y conviertes de nuevo de tiempo unix a fecha

Gracias por la repuesta,ahora mismo voy a buscar en internet como hacer eso de convertir el tiempo a tiempo unix
En línea

“La verdad es siempre revolucionaria.”  ― Lenin
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sumar Hs ; Minutos ; Segundos . Milisegundos
Programación Visual Basic
e500 4 16,914 Último mensaje 30 Marzo 2009, 01:31 am
por e500
Ayuda convertir minutos a horas y minutos !
Java
xbyxrorroh 5 13,099 Último mensaje 27 Junio 2013, 01:53 am
por Debci
Poner timer en horas o minutos?
Programación Visual Basic
TheJucas21 1 2,114 Último mensaje 28 Julio 2014, 03:55 am
por MCKSys Argentina
calcular horas + minutos en c
Programación C/C++
martha71404 0 2,981 Último mensaje 24 Octubre 2015, 01:29 am
por martha71404
Ayuda respecto al uso de MIDI en Java
Java
Julián2016 3 3,246 Último mensaje 5 Mayo 2016, 05:56 am
por Julián2016
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines