比较嵌套循环中的信息并在匹配时进行标记

时间:2017-12-15 22:04:39

标签: java android arrays loops nested

数据是一个携带的数组:   观察1,观察2,观察3,观察4,观察5

stringarray2一个数组,可能包含上述任何一个,例如:   观察1,观察4

我正在尝试将项目添加到countryList中,如果它们出现在两个数组中,则将它们设置为true,否则设置为false。

我需要帮助设置嵌套循环。

我目前有以下设置非常接近,但这只会将数组2中的最后一项添加为true(例如,observation4)   你能看到我出错的地方吗?

while (data.moveToNext()){

        if (data.moveToFirst()){
            do{
                observation = data.getString(1);

                if (editing.equals("yes")) {

                    stringarray2
                    Boolean test = false;
                    for (String name:stringarray2)
                    {
                        if (observation.equals(name)){
                            test = true;
                        }else{
                            test = false;
                        }
                    }

                    Country country = new Country(null,observation,test);
                    countryList.add(country);

                }else{
                    Country country = new Country(null,observation,false);
                    countryList.add(country);
                }
            }while(data.moveToNext());
        }
    }

2 个答案:

答案 0 :(得分:1)

试试这个

if (data.moveToFirst())
{
      do
      {
           observation = data.getString(1);

           if (editing.equals("yes")) 
           {
                stringarray2 //random word here?
                Boolean test = false;
                for (String name:stringarray2)
                {
                    if (observation.equals(name))
                    {
                        test = true; 
                        break;
                    }
                }
                Country country = new Country(null,observation,test);
                countryList.add(country);
            }
            else
            {
               Country country = new Country(null,observation,false);
               countryList.add(country);
            }
      }
      while (data.moveToNext())
}

答案 1 :(得分:0)

我认为你的问题在于你的时间和条件。

使用第一个循环

while (data.moveToNext())

moveToNext()已经检查如果有下一个 移动,你就不应该转移到首先,再次开始使用值

你需要像

这样的东西
try {
    while (data.moveToNext()) {
        observation = data.getString(1);

                if (editing.equals("yes")) {

                    stringarray2
                    Boolean test = false;
                    for (String name:stringarray2)
                    {
                        if (observation.equals(name)){
                            test = true;
                        }else{
                            test = false;
                        }
                    }

                    Country country = new Country(null,observation,test);
                    countryList.add(country);

                }else{
                    Country country = new Country(null,observation,false);
                    countryList.add(country);
                }
    }
} finally {
    data.close();
}

假设你的内在逻辑正常。

P.S我添加了try finally,因为您需要在完成查询结果后关闭光标。