方法中的索引没有增加

时间:2016-05-04 07:30:14

标签: java for-loop

好吧这可能看起来很容易,但它已经困扰我好几天了,老实说,我不知道为什么索引不会增加并得到其他数据。我不知道除return之外的哪个地方。我将它放在2行中,第一行只提供数据库中的第一行数据,第二行只提供数据库中的最后一行。 (见下面注释掉的行)。如何获得适合if语句的每一行?

这是我的代码:

public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay){ 

    for(int i = 0; i<outletList.size(); i++){
        if(outletList.get(i).getCity().equalsIgnoreCase(selection)){
            if(outletList.get(i).getStatus().equals("ACTIVE")){
                bar = outletList.get(i).getBarangay();
                code = Integer.toString(outletList.get(i).getCode());
                name = outletList.get(i).getName();

                data = new Object[]{bar, name, code};
                //return data ->gives the first one in the database
            }
        }
    }
  }
   //return data -> gives the last one in the database
}

3 个答案:

答案 0 :(得分:3)

您需要将所有结果保存在另一个数组中,然后将其返回。

public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay)
{ 
    List<object> result = new List<object>();

    for(int i = 0; i<outletList.size(); i++)
    {
        if(outletList.get(i).getCity().equalsIgnoreCase(selection))
        {
            if(outletList.get(i).getStatus().equals("ACTIVE"))
            {
                bar = outletList.get(i).getBarangay();
                code = Integer.toString(outletList.get(i).getCode());
                name = outletList.get(i).getName();

                data = new Object[]{bar, name, code};
                result.Add(data);
            }
        }
    }
    return result.ToArray();
}

答案 1 :(得分:0)

您的问题如下:

  1. 您的第一个return语句将退出for循环,然后返回 第一个对象,如结果所示。

  2. 您的第二份退货声明,正如您所解释的那样     返回在for循环中迭代的最后一条记录。

  3. 您的第三个问题是data = new Object[]{bar, name, code};。在每个循环之后,您将数据对象实例化为新的     对象数组,而不是将值添加到数组,所以基本上,你总是创建一个对象数组,其中包含1个项目,最后一个被迭代。

  4. 如果要返回数组中的所有对象,请尝试以下操作:

    public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay)
        {
            Object[] result = new Object[outletList.size()];
            for (int i = 0; i < outletList.size(); i++)
            {
                if (outletList.get(i).getCity().equalsIgnoreCase(selection))
                {
                    if (outletList.get(i).getStatus().equals("ACTIVE"))
                    {
                        bar = outletList.get(i).getBarangay();
                        code = Integer.toString(outletList.get(i).getCode());
                        name = outletList.get(i).getName();
    
                        var data = new { bar, name, code };
                        result[i] = data;
                    }
                }
            }
            return result;
        }
    

答案 2 :(得分:0)

试试这个:

public List<Outlet> populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, String selDay){ 

    List<Outlet> data = new ArrayList<Outlet>();

    for(int i = 0; i < outletList.size(); i++){
        if(outletList.get(i).getCity().equalsIgnoreCase(selection) && 
            outletList.get(i).getStatus().equals("ACTIVE")){
            data.add(outletList.get(i));
        }
    }
    return data;
}