Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
#1

Заполнение массива данных циклом с интревалом (15 минут)

22.07.2015, 16:09. Просмотров 930. Ответов 15
Метки нет (Все метки)

День добрый , требуется заполнить массив цифрами в формате времени от 00:00 до 23:45

с интервалом в 15 минут

скажем заходим в активити и видим список - 00:00 . 00:15 . 00:30 и т.д.
Кто подскажет как разработать такой цикл?

на данный момент есть вот такой - появляется список с 96 элементами.


Java
1
2
3
4
5
6
7
8
9
  private void initList() {
        timeChekList = new ArrayList<>();
        for (int i = 0; i < 95; i++) {
            m = new HashMap<String, Object>();
            m.put(ATTRIBUTE_NAME_TEXT, "00:00" + i);
            // m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.power);
            timeChekList.add(String.valueOf(m));
        }
    }
Нашёл поиском похожую постановку - только на PhP - перевести в Java не получ.)

Увеличение времени на 15 минут в цикле PHP

ещё вот - но похоже не подходит - http://forum.sources.ru/index.php?showtopic=389065

Есть предложения?)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2015, 16:09
Ответы с готовыми решениями:

Заполнение массива циклом
Здравствуйте! Я новичок. Помогите пожалуйста сделать вот что. Заполнить массив...

Заполнение динамического массива циклом For.
вырезал часть кода //================================GLOBAL...

Заполнение массива указателей циклом
И снова здравствуйте! Пожалуйста, подробно и доступно объясните почему не...

Заполнение массива в определённые ячейки (циклом)
Нужно сделать тоже самое (что в приложенном коде), но чтобы это выполнялось в...

Заполнение нескольких списков циклом
Доброго времени суток. Имеется например 3 списка, а если их больше? Так вот...

15
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
22.07.2015, 16:10  [ТС] #2
ах да ,вот скрин.
0
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)  
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,534
Завершенные тесты: 1
22.07.2015, 17:43 #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        String[] lazyBitch = {
                "00:00", "00:15", "00:30", "00:45", "01:00", "01:15", "01:30", "01:45",
                "02:00", "02:15", "02:30", "02:45", "03:00", "03:15", "03:30", "03:45",
                "04:00", "04:15", "04:30", "04:45", "05:00", "05:15", "05:30", "05:45",
                "06:00", "06:15", "06:30", "06:45", "07:00", "07:15", "07:30", "07:45",
                "08:00", "08:15", "08:30", "08:45", "09:00", "09:15", "09:30", "09:45",
                "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45",
                "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45",
                "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45",
                "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45",
                "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45",
                "20:00", "20:15", "20:30", "20:45", "21:00", "21:15", "21:30", "21:45",
                "22:00", "22:15", "22:30", "22:45", "23:00", "23:15", "23:30", "23:45"};
и можно потом в цикле хоть боком, хоть сзади дописывать что угодно и форматировать что угодно
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
23.07.2015, 08:20 #4
Лучший ответ Сообщение было отмечено Soprano6111 как решение

Решение

Java
1
2
3
for (int h = 0; h < 24; h++)
   for (int m = 0; m < 60; m += 15)
      System.out.println((h < 10 ? "0" + h : h) + ":" + (m == 0 ? "0" + m : m));
1
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 09:54  [ТС] #5
Ну Паблито , в том то и фишка что бы код был идеальный сделать цикл а не писать ручками как у тебя в примере ...
0
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 738
23.07.2015, 10:07 #6
фишка в том чтобы делать быстрее, если массив короткий иногда быстрее его "руками" написать
0
Pablito
2713 / 2159 / 732
Регистрация: 12.05.2014
Сообщений: 7,534
Завершенные тесты: 1
23.07.2015, 10:13 #7
Цитата Сообщение от Soprano6111 Посмотреть сообщение
Ну Паблито , в том то и фишка что бы код был идеальный сделать цикл а не писать ручками как у тебя в примере
не ты ли мне в соседней теме писал?
Цитата Сообщение от Soprano6111 Посмотреть сообщение
его приём куда трудоёмкий в плане написания кода - а делается всё очень просто как я изложил выше - старая школа просто не может принять нововведений и делает всё по своему. А как известно чем проще код - тем он ценней.
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
23.07.2015, 11:03 #8
А можно еще круче)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private List<String> generateTimes(int addedField, int addedValue){
        Calendar calendar = Calendar.getInstance();
        int startDay = 1;
        calendar.set(1, 1, startDay, 0, 0, 59);
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        List<String> times = new ArrayList<>();
        times.add(format.format(calendar.getTime()));
        while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
            calendar.add(addedField, addedValue);
            if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
                times.add(format.format(calendar.getTime()));
        }
        return times;
    }
И генерить время с любым промежутком:
Java
1
List<String> times = generateTimes(Calendar.MINUTE, 15);
1
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:13  [ТС] #9
Есть старая детская книжка c# для школьников - в ней есть такая Цитата -

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

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

и вот Картинка - Паблито ты девочка справа ))))).
0
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)  
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:15  [ТС] #10
Valakin - полностью с тобой согласен , но в данном контексте задача - сделать красивую функцию.см 1й пост).
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
23.07.2015, 11:24 #11
Цитата Сообщение от Soprano6111 Посмотреть сообщение
сделать красивую функцию
Да твоя задача то - детская, тут и ребенок справится, давай посложнее чегонить)
0
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:25  [ТС] #12
даже не знаю кому отдать лучший ответ по теме )) Spelcrawler или Rube..
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
23.07.2015, 11:28 #13
Вопрос про цикл был, ответ очевиден
0
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:45  [ТС] #14
private List<String> generateTimes(int addedField, int addedValue){
Calendar calendar = Calendar.getInstance();
int startDay = 1;
calendar.set(1, 1, startDay, 0, 0, 59);
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
List<String> times = new ArrayList<>();
times.add(format.format(calendar.getTime()));
while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
calendar.add(addedField, addedValue);
if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
times.add(format.format(calendar.getTime()));
}
return times;
}


У меня получилось вот так -
0
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 11:45  [ТС] #15
123
0
Миниатюры
Заполнение массива данных циклом с интревалом (15 минут)   Заполнение массива данных циклом с интревалом (15 минут)  
Soprano6111
2 / 2 / 0
Регистрация: 09.04.2015
Сообщений: 90
23.07.2015, 12:12  [ТС] #16
Java
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
 private void initList() {
// Требуется ещё оптимизщация
        timeChekList = new ArrayList<>();
     //   for (int i = 0; i < 95; i++) {
            m = new HashMap<String, Object>();
          //  m.put(ATTRIBUTE_NAME_TEXT, "00:00" + i);
            // m.put(ATTRIBUTE_NAME_IMAGE, R.drawable.power);
            List<String> times = generateTimes(Calendar.MINUTE, 15);
            timeChekList.add(String.valueOf(times));
      //  }
    }
    private List<String> generateTimes(int addedField, int addedValue){
        Calendar calendar = Calendar.getInstance();
        int startDay = 1;
        calendar.set(1, 1, startDay, 0, 0, 59);
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        List<String> times = new ArrayList<>();
        times.add(format.format(calendar.getTime()));
        while (calendar.get(Calendar.DAY_OF_MONTH) == startDay){
            calendar.add(addedField, addedValue);
            if(!(calendar.get(Calendar.HOUR_OF_DAY) == 0 && calendar.get(Calendar.MINUTE) == 0))
                times.add(format.format(calendar.getTime()));
        }
        return times;
    }
Добавлено через 22 минуты
Всё всем спасибо , Руби рулит , но 2й цикл на перспективу - тоже респект , тему закрываем , Паблито - привет - всегда любит поспорить и вставить негативчик - сварливый ).
0
23.07.2015, 12:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 12:12

Заполнение ячеек в Excel циклом for
Ячейки в Excel данным способом почему-то не заполняются. Почему? Как это...

Заполнение окон редактирования одним циклом
Привет, коммьюнити! Сидел я, значит, нажимал Ctrl+C, Ctrl+V, да только и...

Заполнение массива данных
Первый раз взялся за VBA в Excel, никак не могу понять как сделать. Есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru