仅对数组列表

时间:2015-11-05 22:24:52

标签: java

我从PHP获得结果,并将它们解析为String数组 ParseResults [0]是从数据库返回的ID。

我正在尝试做的是制作一个消息框,它只显示一次(当然,直到应用程序重新启动)。

我的代码看起来像这样,但我无法弄清楚是什么阻止它正常工作。

public void ShowNotification() {
    try {

        ArrayList<String> SearchGNArray = OverblikIntetSvar(Main.BrugerID);
        // SearchGNArray = Gets undecoded rows of information from DB
        for(int i=0; i<SearchGNArray.size(); i++){

            String[] ParseTilArray = ParseResultater(SearchGNArray.get(i));
            // ParseToArray = Parse results and decode to useable results
            // ParseToArray[0] = the index containing the ID we'd like 
            // to keep track of, if it already had shown a popup about it

            if (SearchPopUpArray.size() == 0) {
                // No ID's yet in SearchPopUpArray
                // SearchPopUpArray = Where we'd like to store our already shown ID's
                SearchPopUpArray.add(ParseTilArray[0]);

                // Create Messagebox

            }

            boolean match = false ;
            for(int ii=0; ii<SearchPopUpArray.size(); ii++){

                try {
                    match = SearchPopUpArray.get(ii).equals(ParseTilArray[0]);

                } catch (Exception e) {
                    e.printStackTrace();

                }

                if(match){
                    // There is a match
                    break; // Break to not create a popup

                } else {

                    // No match in MatchPopUpArray
                    SearchPopUpArray.add(ParseTilArray[0]);

                    // Create a Messagebox

                }
            }



         }

            } catch (Exception e) {
            e.printStackTrace();
        }
}

截至目前我有2行,所以应该有两个ID。有101和102.它显示102一次,然后它只是创建消息框约101。

2 个答案:

答案 0 :(得分:0)

你没有在第二个for循环中递增正确的变量:

for(int ii = 0; ii <SearchPopUpArray.size();i++){
                                       /*   ^
                                            |
                                          should be ii++
                                       */
}

使用更具描述性的变量名称(例如indexGNindexPopup)可能有助于避免此类问题

答案 1 :(得分:0)

我删除了第二个for循环:

         for(int ii=0; ii<SearchPopUpArray.size(); ii++){

            try {
                match = SearchPopUpArray.get(ii).equals(ParseTilArray[0]);

            } catch (Exception e) {
                e.printStackTrace();

            }

            if(match){
                // There is a match

            } else {

                // No match in MatchPopUpArray
                SearchPopUpArray.add(ParseTilArray[0]);

                // Create a Messagebox

            }
        }

替换为

            if (SearchPopUpArray.contains(ParseTilArray[0])) {
                // Match
            } else {
                // No match i MatchPopUpArray
                SearchPopUpArray.add(ParseTilArray[0]);

                // Create a Messagebox
            }

更简单。