Android - приложение Китайский Зодиак - Как атаковать это - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь создать приложение для Android, чтобы определить знак китайского зодиака, исходя из диаграммы, расположенной здесь: http://en.wikipedia.org/wiki/Chinese_zodiac#Chinese_calendar

Я получаю данные от пользователя в виджете DatePicker, который дает мне целое число для каждого месяца, дня и года. Я создал объект, назовем его ZOD, который имеет целочисленную переменную для дня, месяца и года.

Для начала я хотел бы объяснить первый подход, который пришёл мне в голову. Я думаю, что у меня будет ArrayList моего класса ZOD, который содержит все даты. например, точка 0 будет датой «5 февраля 1924 года» (2,5,1924), а точка 1 будет «23 января 1925 года» (1,23,1925) и т. д. *

Предположим, что пользовательский ввод - это объект ZOD с именем input, с введенными значениями. Я думал, что мог бы перебрать arrayList с помощью цикла for (int i = 0; и т. Д.), И сначала я бы сравнил год

if(input.year >= ZOD(i).year  &&  input.year <= ZOD(i+1).year)
{

}

по сути, я думаю, что это даст мне правильное место для года. Могу ли я продолжить эту схему и получить еще два оператора if, один за месяц и один за день, и надеяться на правильное совпадение? редактировать: просто набрав это и просматривая сделанные мной заметки, я могу сказать, что этот метод не будет работать. для ВСЕХ дат зодиака месяц - январь или февраль.

У меня нет общих вопросов, я надеюсь, что мое сообщение подводит итог тому, что я ищу и пытаюсь сделать. Мне просто нужен совет или предложения.

1 Ответ

1 голос
/ 16 февраля 2012

Вероятно, гораздо проще преобразовать даты в целые числа дней или просто в пары java.util.Date объектов, чем пытаться создать собственное представление даты.

Затем вы можете сравнить ваш день ввода с этими диапазонами, сравнивая их с началом и концом, пока не найдете совпадение. Вы можете хранить явные диапазоны (пары чисел / даты) или начальные и конечные значения в двух параллельных массивах одинаковой длины.

(Возможно, также возможно ускорить процесс с помощью бинарного поиска или аналогичного, но вряд ли стоит затраченных усилий).

Я предполагаю, что здесь нет простой формулы для определения Календаря, следовательно, нужно искать. Если есть какая-то формула для построения календаря, вы можете реализовать ее вместо этого.

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