Как суммировать минуты в массиве, если их формат - строка? - PullRequest
1 голос
/ 06 декабря 2011

У меня есть строковый массив, который включает несколько минут, таких как «00:05», «00:30», «00:25» и т. Д. Я хочу суммировать значения в формате времени?Кто-нибудь может мне помочь, как мне это сделать?

Ответы [ 6 ]

1 голос
/ 07 декабря 2011

Общее время в минутах:

int sum = 0;
final String[] mins = new String[] { "00:05", "00:30", "00:25" };
for (String str : mins) {
    String[] parts = str.split(":");
    sum += Integer.parseInt(parts[1]);
}
System.out.println(sum);

Вы не указываете, как именно вы хотите, чтобы этот вывод форматировался.

Если могут быть и часовые элементы, замените вторую строку цикла следующим:

sum += (Integer.parseInt(parts[0]) * 60) + Integer.parseInt(parts[1]);
1 голос
/ 06 декабря 2011

Я пойду быстро и грязно

  1. Разделить каждая строка на ":"
  2. Конвертировать обе части вцелое число
  3. Умножьте первый раз на 60, чтобы преобразовать часы в минуты, и добавьте вторую часть
  4. Сделайте это для каждого значения в вашем массиве и подсчитайте их вместе
  5. Этообщее время в минутах, которое вы можете конвертировать в любой формат, который вам нравится
0 голосов
/ 07 декабря 2011

Объектно-ориентированный подход:

public static TimeAcumm sum(final String[] times) {
    final TimeAcumm c = new TimeAcumm();
    for (final String time : times) {
        c.incrementFromFormattedString(time);
    }

    return c;
}

public class TimeAcumm {
    private int hours = 0;
    private int minutes = 0;
    private int seconds = 0;

    public int getHours() {
        return hours;
    }

    public int getMinutes() {
        return minutes;
    }

    public int getSeconds() {
        return seconds;
    }

    public void incrementFromFormattedString(final String time) {
        final String[] parts = time.split(":");
        this.minutes += Integer.parseInt(parts[0]);
        this.seconds += Integer.parseInt(parts[1]);
        validate();
    }

    private void validate() {
        if (this.minutes > 59) {
            this.hours++;
            this.minutes -= 60;
        }

        if (this.seconds > 59) {
            this.minutes++;
            this.seconds -= 60;
        }
    }

    @Override
    public String toString() {
        final String s = hours + "H:" + minutes + "M:" + seconds + "S";
        return s;
    }
}
0 голосов
/ 06 декабря 2011

Разделить строки на ':', проанализировать значения как целые и добавить их.

0 голосов
/ 06 декабря 2011

Вы можете substring это, а затем вызвать Integer.parseInt на результат.Для части часов сделайте то же самое и умножьте это на 60.

0 голосов
/ 06 декабря 2011

это мое предложение.Ни скомпилировано, ни запущено, ни проверено, ни гарантировано.

long seconds =  0; 
for ( String min : minutes )
{
    seconds += Integer.parseInt(min.substring(0,1))*60 + Integer.parseInt(min.substring(3,4));
}
return new Date ( seconds / 1000 ) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...