Java - Lo habríais hecho distinto?

 
Vista:
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Lo habríais hecho distinto?

Publicado por souquest (15 intervenciones) el 29/07/2019 08:15:40
Buenas, ando liado con un libro de java en el que hay dos tipos de ejercicio, unos resueltos y otros que no están resueltos, lo estoy estudiando solo así que no tengo compañeros o profesor que me corrija y, aunque el código funciona, me gustaría que alguien me diera su opinion, en fin...

Habríais hecho esto así?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
    
    Diseñar una función a la que se le pasan las horas y minutso de dos instantes de tiempo
    con el prototipo
    static int diferenciaMin(int hora1, int minuto1, int hora2, int minuto2)
    
    La función devolverá la cantidad de minutos que existen de diferencia entre los dos instantes utilizados.
    
    */
 
    static int diferenciaMin(int hora1, int minuto1, int hora2, int minuto2){
        int total1;
        int total2;
        int diferencia;
 
 
         total1 = hora1 * 60 + minuto1;
         total2 = hora2 * 60 + minuto2;
 
 
        if(hora1 > hora2){
 
            diferencia = total1 - total2;
            if(diferencia > 720){
                diferencia = 1440 - diferencia;
            }
 
 
        }else{
 
 
         diferencia = total2 - total1;
        }
         return (diferencia);
    }
 
 
public static void main(String[] args) {
 
          Scanner sc = new Scanner(System.in);
          sc.useLocale(Locale.US);
 
 
 
       //   System.out.println("dame un numero");
          //int n = sc.nextInt();
 
         int hora, minuto, horad, minutod;
         hora = 3;
         minuto = 15;
         horad = 2;
         minutod = 15;
         System.out.println(diferenciaMin(hora, minuto, horad,minutod));
 
 
 
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Lo habríais hecho distinto?

Publicado por souquest (15 intervenciones) el 29/07/2019 08:41:23
No puedo editar el mensaje...

Había un caso que no había contemplado y es el caso en el que la hora fuese la misma, así que he añadido esto al final del programa, justo antes del return.


1
2
3
if(diferencia < 0){
    diferencia = diferencia * -1;
}

una diferencia negativa no tiene ningún sentido pero podía darse con ese programa, en fin, gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Lo habríais hecho distinto?

Publicado por Kabuto (1385 intervenciones) el 29/07/2019 10:53:04
No se si es que no lo entiendo bien el enunciado del todo.

Pero yo la solución la veo más simple:

1
2
3
4
5
6
7
8
9
10
11
12
13
static int diferenciaMin(int hora1, int minuto1, int hora2, int minuto2){
    int total1;
    int total2;
 
    total1 = hora1 * 60 + minuto1;
    total2 = hora2 * 60 + minuto2;
 
    if (total1 <= total2) //Aquí ya se contempla la posibilidad de que los tiempos sean iguales
        return total2 - total1;
    else
        return total1 - total2;
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Lo habríais hecho distinto?

Publicado por souquest (15 intervenciones) el 29/07/2019 11:31:38
Ciertamente es más simple y fue como empecé a hacerlo, pero después he partido desde el supuesto de que la segunda hora será más tarde que la primera en el caso de que la primera fuese, por ejemplo 23:50 y la segunda 02:30 (por que te esperas que sea del dia siguiente) la diferencia no seria 1280 minutos si no 160.



Bueno, por eso mismo preguntaba, he empezado a solucionar ese primer supuesto, después cuando me ha dado un número muy largo, he supuesto que ya no sería del dia siguiente si no dos horas del mismo dia, de ahí lo de restar los 1440 si supera las 12 horas, para que la diferencia sea, pues bien, la diferencia xD



En fin, gracias, se solucionaría preguntando, en vez de asumiendo, si es del mismo dia o son dias distintos... xD
me he hecho un lio al ponerme en la situacion del usuario que quiere calcular la diferencia en minutos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Lo habríais hecho distinto?

Publicado por Kabuto (1385 intervenciones) el 30/07/2019 00:38:10
Vaaale, ahora entiendo tus intenciones.

Pero claro, como dices, no podemos presuponer cosas ni tampoco intentar contemplar posibilidades que el enunciado del ejercicio no haga mención.
De lo contrario, puedes volverte loco intentando hacer un programa "perfecto".

Tal y como está redactado el enunciado, debemos asumir que los dos instantes de tiempo pertenecen al mismo día.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar