Алгоритм логики - PullRequest
       10

Алгоритм логики

1 голос
/ 12 января 2012

Я застрял в проблеме, и мне не удалось объяснить логику, надеюсь, вы, ребята, сможете мне помочь. Кто-то задавал такую ​​же проблему здесь на stackoverflow, и я не могу найти ссылку, она очень похожа на запрос, который был размещен

Я создаю отчет, в котором пользователь выбирает дату / дату и на основании этого значения извлекаются из базы данных и отображаются в отчете. Apache poi используется для создания отчета о Excel.

У меня есть 4 поля / столбцы

ID      Date        true/false   someaction

Если пользователь выбирает только одну или несколько дат, программа берет все даты и сохраняет их в Arraylist, а затем выполняет итерацию для получения данных, сохраненных в базе данных на выбранную дату

псевдокод

 String checkLastCell = null;

    for (Date listOfdates : datesL){

            //query gets fired to the database by sending listOfdates as a parameter

            for ( T tt : t) {

                i = tt.getId(); //ID
                j = tt.getDate(); //Date
                k = tt.getTrueFalse(); // truefalse 


            and setting them on cells 

            for column l , i am writing some action based on the 
            l= Yes or No  //someaction Yes or No
  • для Id = 1, если в столбце truefalse установлено значение True, мне нужно написать Да в столбце Someaction

  • В следующей итерации, если в столбце truefalse задано значение id = 2 и значение False, я напишу в столбце someaction значение No,

  • если на следующей итерации Id = 1 и False установлено в столбцах truefalse, мне нужно проверить предыдущее действие для ID = 1, а затем записать действие -> Нет (поскольку оно изменилось с True на False )

if (lastcell равен Null && t.getTrueFalse (). Equals ("true") || lastcell равен not null && t.getTrueFalse (). equals ("true")) if if (lastcell равен Null && t.getTrueFalse (). equals ("false") || lastcell не равен null && t.getTrueFalse (). equals ("false")) {установить действие как НЕТ} ..... здесь нужно написать еще немного логики.

      i++; // increment the row       }
          }   }

мне нужны предложения / помощь в написании псевдокода / алгоритма

1 Ответ

0 голосов
/ 12 января 2012

Вам просто нужен HashMap (java) для хранения индекса последней строки, содержащей идентификатор. Вот алгоритм / реализация.

List<Row> dbResults = getDatabaseResults(listOfDates);
HashMap<int, int> idToLastIndex = new HashMap<int, int>();
for(int x=0; x<dbResults.size(); x++) {
    // values
    i = dbResults[x].getID();
    j = dbResults[x].getDate();
    k = dbResults[x].getTrueFalse();
    // get action value
    if(idToIndex.containsKey(i) && k == dbResults.get(idToLastIndex.get(i)).getTrueFalse()) {
        // if there's an old value and it equals the new one
        a = "NO ACTION TAKEN";
    } else if(k == true) {
        a = "YES";
    } else {
        a = "NO";
    }
    idToLastIndex.put(i, x); // ID->Index
}

ПРИМЕЧАНИЕ Приведенный выше код был написан в веб-браузере и не был протестирован, могут присутствовать синтаксические ошибки.

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