Рассчитать разницу в часах между двумя временами в днях - PullRequest
0 голосов
/ 15 ноября 2011

Просто хотел узнать, будут ли результаты этой функции всегда сохраняться?

private int calcHourDiff(int start, int end) {

    int diff;

    if(start > end) {
        diff = ((2400 - start) + end) / 100;
    } else if(start < end) {
        diff = (end - start) / 100;
    } else {
        diff = 0;
    }

    return diff;

}

Функции передаются как военное время, и оно должно возвращать количество часов между ними.Переданные значения всегда будут «простыми» числами, такими как 1200, 1400, 2100, а не 2134 или 015. Должна быть возможность правильно рассчитать все возможные случаи, будет ли эта функция сохраняться?

У меня были проблемы со значениями, начиная от ночи (8 вечера или 2000) до следующего дня (6 утра или 600), и я думаю, что это должно это исправить?

Спасибо за время.

Ответы [ 3 ]

2 голосов
/ 15 ноября 2011

Просто чтобы быть другим, вот версия без каких-либо условий:

private int calcHourDiff(int start, int end) {
    return ((end - start + 2400) % 2400) / 100;
}
0 голосов
/ 15 ноября 2011
private int calcHourDiff(int start, int end) {

  int newEnd = (start > end)?end + 2400 : end;
  return (newEnd - start) / 100;
}
0 голосов
/ 15 ноября 2011

Хорошо выглядит.

При сравнении двух чисел x и y возможны только 3 результата: x == y, x y

Ваш блок if охватывает все три, и математика для каждого условия выглядит хорошо.

Просто было бы беспокоиться о предположении, что передаваемые данные всегда будут "легкими" и правильными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...