簡體   English   中英

算法邏輯

[英]Algorithm logic

我被困在一個問題,沒有把這里邏輯,希望你們能幫助我。 有人問過同樣的問題在這里計算器,我無法找到該鏈接,它非常類似於它被張貼查詢

我generatng的報告,其中用戶選擇日期/日期和值是從數據庫中獲取取出並在報告中顯示的基礎上。 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列設置,我需要寫在是列Someaction

  • 在接下來的迭代中,如果ID = 2,而假的truefalse列設置,我會在someaction欄寫不行,

  • 如果在接下來的迭代中,ID = 1和虛假truefalse列設置,我需要檢查ID = 1之前的動作,然后寫的動作 - >沒有(因為它從真更改為false)

如果(lastcell是空&& t.getTrueFalse()。等於( “真”)|| lastcell不是null && t.getTrueFalse()。等於( “真”))如果要是(lastcell是空&& t.getTrueFalse() .equals( “假”)|| lastcell不是null && t.getTrueFalse()。等於( “假”)){設定行動NO} .....一些邏輯需要寫在這里。

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

我需要建議/幫助寫的偽代碼/算法中

您只需要一個HashMap(java)來保存包含ID的最后一行的索引。 這是算法/實現。

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
}

注意上面的代碼是用Web瀏覽器編寫的,未經測試,可能會出現語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM