Вниз  Java-программирование (1-ые посты)
- 21.08.2014 / 20:45
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
Уместно ли это
  1. int m; // номер месяца
  2. int dayCount; // количество дней
  3. /*
  4. Считали откуда - то m
  5. */
  6. if(m==1) dayCount = 31;
  7. if(m==2) dayCount = 28;
  8. if(m==3) dayCount = 31;
  9. if(m==4) dayCount = 30;
  10. if(m==5) dayCount = 31;
  11. if(m==6) dayCount = 30;
  12. if(m==7) dayCount = 31;
  13. if(m==8) dayCount = 31;
  14. if(m==9) dayCount = 30;
  15. if(m==10) dayCount = 31;
  16. if(m==11) dayCount = 30;
  17. if(m==12) dayCount = 31;
заменить на это:
  1. switch (m) {
  2.             case 1:  dayCount = 31;
  3.                      break;
  4.             case 2:  dayCount = 28;
  5.                      break;
  6.             case 3:  dayCount = 31;
  7.                      break;
  8.             case 4:  dayCount = 30;
  9.                      break;
  10.             case 5:  dayCount = 31;
  11.                      break;
  12.             case 6:  dayCount = 30;
  13.                      break;
  14.             case 7:  dayCount = 31;
  15.                      break;
  16.             case 8:  dayCount = 31;
  17.                      break;
  18.             case 9:  dayCount = 30;
  19.                      break;
  20.             case 10: dayCount = 31;
  21.                      break;
  22.             case 11: dayCount = 30;
  23.                      break;
  24.             case 12: dayCount = 31;
  25.                      break;
  26. }
Я считаю, что нет, ибо с ифами код компактнее и легче читается
__________________
 わからない!!
- 21.08.2014 / 20:50
HoldFast
  Пользователь

HoldFast 
Сейчас: Offline
Почему бы не заюзать Calendar. Там есть функция с количеством дней в месяце
__________________
 Да, детка, я - Король Ящериц!!!
- 21.08.2014 / 20:52
RooMeN
  Пользователь

RooMeN 
Сейчас: Offline
ВитаминКО, А не проще сделать массив месяцев и положить в каждую ячейку кол-во дней?

int[] Month = new int[]{31, 28, 31, и т.д.};

Изменено RooMeN (21.08 / 20:58) (всего 1 раз)
- 21.08.2014 / 20:59
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
RooMeN, +1
ВитаминКО, ну ты индеец индус. Если на то пошло, то лучше так:
  1. switch (m) {
  2.     case 1:
  3.     case 3:
  4.     case 5:
  5.     case 7:
  6.     case 8:
  7.     case 10:
  8.     case 12:
  9.         dayCount = 31;
  10.         break;
  11.  
  12.     case 2:
  13.         dayCount = 28;
  14.         break;
  15.  
  16.     case 4:
  17.     case 6:
  18.     case 9:
  19.     case 11:
  20.         dayCount = 30;
  21.         break;
  22. }
Но метод RooMeN'а лучше и быстрее.
__________________
 let live

Изменено aNNiMON (21.08 / 21:04) (всего 2 раза)
- 21.08.2014 / 21:13
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
Цитата HoldFast:
Почему бы не заюзать Calendar. Там есть функция с количеством дней в месяце
На будущее учту, но сейчас это не столь важно, как узнать количество дней в месяце.

RooMeN, я же не спрашивал, на что заменить.. Я спросил, уместно ли. Такой был пример для использования Case.
Массив конечно проще. Но это если m типа int, a не String.

Кстати, о массивах. Конкретно о двумерных.
  1. int[][] a = new int[3][3];
  2. for(int i = 0; i < a.length; i++)
  3. {
  4.     a[i] = new int[3];
  5. }
Такой код правильный? Ведь сначала объявили массив массивов, у которого значение null по дефолту и нужно наверное объявить все одномерные масивы..
И можно после обратиться (изменить элемент), скажем, так: a[0][0] = 1;?

Если не правильно, то как надо правильно объявлять и работать?
__________________
 わからない!!
- 21.08.2014 / 21:16
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
aNNiMON, это не я индус, а автор статьи одной.. Читаю, ищу что-то новое, и вот наткнулся на такой пример замены. Решил узнать у спецов в этом вопросе.
__________________
 わからない!!
- 21.08.2014 / 21:16
HoldFast
  Пользователь

HoldFast 
Сейчас: Offline
Можно жы
__________________
 Да, детка, я - Король Ящериц!!!
- 21.08.2014 / 21:30
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
ВитаминКО,
  1. int[][] a = new int[3][3];
Эта строка уже инициализирует все массивы и дополнительно ничего инициализировать не надо.
А вот так
  1. int[][] a = new int[3][];
уже надо инициализировать каждый из трёх одномерных массивов. Но инициализировать можно даже так:
  1. a[0] = new int[3];
  2. a[1] = new int[] { 1, 2, 3, 4, 5 };
  3. a[2] = new int[666];
То есть необязательно, чтоб была одна размерность.
В таком случае a[1][4] выдаст 5, а a[0][4] ArrayIndexOutOfBoundsException
__________________
 let live

Изменено aNNiMON (21.08 / 21:32) (всего 2 раза)
- 21.08.2014 / 21:40
ВитаминКО
  Супермодератор

ВитаминКО 
Сейчас: Offline
aNNiMON, вот блин.. Ок, отмечу себе, что тот цикл лишний. И запишу еще твои примеры.

Я чую, еще не раз вернусь в эту тему :gg: И тогда уже aNNiMON сможет написать свой учебник :gy:

Пока я собираю материал с одного источника, потом еще по двум пройдусь чтобы все собрать
__________________
 わからない!!
- 22.08.2014 / 00:09
Naik
  Пользователь

Naik 
Сейчас: Offline
ВитаминКО (21.08.2014/21:13)
Почему бы не заюзать Calendar. Там есть функция с количеством дней в месяцеНа будущее учту, но сейчас это не столь важно, как узнать количество дней в месяце.

RooMeN, я же не спрашивал, на что заме
со String можно также
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)