2014-11-12 2 views
0

Мне было интересно, почему я не могу сделать правильный результат добавления времени, например: 3: 11: 0 от 2:50:20 + 0:20:40, однако у меня только что-то вроде 3: 10: 0 , Итак, ниже моя работа;Как сделать добавление времени в Java?

//variable 
    int hour, min, sec; 
    int hour1, min1, sec1; 
    int total, total1, total2; 
    int total11,total12, total21, total22; 

    //input1 
    Scanner input = new Scanner(System.in); 
    System.out.print("Input hours\t: "); 
    hour = input.nextInt(); 
    System.out.print("Input minutes\t: "); 
    min = input.nextInt(); 
    System.out.print("Input seconds\t: "); 
    sec = input.nextInt(); 

    //output1 
    System.out.println("Time 1 is " + hour + ":" + min + ":" + sec); 

    //input2 
    System.out.print("Input additional hours\t: "); 
    hour1 = input.nextInt(); 
    System.out.print("Input additional minute\t: "); 
    min1 = input.nextInt(); 
    System.out.print("Input additional seconds\t: "); 
    sec1 = input.nextInt(); 

    //output2 
    System.out.println("Time 2 is " + jam1 + ":" + menit1 + ":" + detik1); 

    //process 
    total = hour + hour1; 
    total1 = min + min1; 
    total11 = total1/60; 
    total12 = total11%60; 
    total2 = sec + sec1; 
    total21 = total2/60; 
    total22 = total2%60; 

    if (total1 > 60) { 
    total1 = (min + min1) - 60; 
     total = (hour + hour1) + total11; 
     total2 = (sec + sec1)-60; 
    } 
    if (total2 > 60) { 
     total2 = (sec + sec1) - 60; 
     total1 = (min + min1) + total22; 
    } 
    //finaloutput 
    System.out.println("Your total time is " + total + ":" + total1 + ":" + total2); 

* К сожалению о грамматике :) Я действительно ценю ваш ответ :)

+0

Не правда ли, что правильный ответ? Вы спрашиваете, почему вы форматируете его неправильно? –

+0

У вас есть опечатка: 'total1 = (min + min1) + total22;' должно быть 'total1 = (min + min1) + total21;' – Pablo

+0

Ваш пример кода не компилируется - где находятся 'jam1',' menit1' и 'detik1' определены? Кроме того, 'total1',' total11', 'total21' и т. Д. Являются страшными именами переменных. Опишите, что они собой представляют, не просто добавьте числа до конца. –

ответ

1

Лучший способ, который я нашел, чтобы сделать эти вещи, чтобы преобразовать оба раза в секундах (так конвертировать 3:11: 00 до 11460 секунд за полночь), добавьте/вычтите их, а затем переведите обратно в hh: mm: ss. Грубо говоря:

int time1 = (hours1 * 60 + min1) * 60 + sec1; 
int time2 = (hours2 * 60 + min2) * 60 + sec2; 
int total = time1 + time2; 
short hour = total/3600; 
short minute = total/60 % 60; 
short second = total %60; 
+0

Это, безусловно, правильный способ подойти к проблеме, предполагая, что стандартные методы библиотеки не допускаются. –

+0

Спасибо! Я тоже попробовал это, и я получил правильный ответ, еще раз спасибо! :) – pg14

1

Вы хотите что-то вроде этого:

 int totalHour, totalMin, totalSec, totalTemp; 
     totalSec = sec + sec1; 
     totalMin = (totalSec/60) + min + min1; 
     totalHour = (totalMin/60) + hour + hour1; 
     totalSec = totalSec % 60; 
     totalMin = totalMin % 60; 
     if(totalHour != 12) 
     { 
      totalHour = totalHour % 12; 
     } 


     //finaloutput 
     System.out.println("Your total time is " + totalHour + ":" + totalMin + ":" + totalSec); 

Это будет принимать все значения, начиная с секундами и рассчитать суммы на основании, если есть переполнение от нижней т.е.. секунд -> минут -> часов. Затем он рассчитает фактические секунды и часы в зависимости от оставшейся части предыдущих калокаций ...

+0

Спасибо! Я попробовал это, и я получил правильный ответ, еще раз спасибо! :) – pg14