Java 方法中的索引未增加

Java 方法中的索引未增加,java,for-loop,Java,For Loop,好吧,这似乎很容易,但它已经困扰了我好几天了,我真的不知道为什么指数不会增加,并得到其他数据。我不知道去哪里,但是返回。我把它放在两行中,第一行只给出数据库中的第一行数据,第二行只给出数据库中的最后一行数据。(参见下面注释掉的行)。如何获得符合if语句的每一行 这是我的密码: public Object[] populateTable(ArrayList<Outlet> outletList, String selection, int size, int monthCtr, Str

好吧,这似乎很容易,但它已经困扰了我好几天了,我真的不知道为什么指数不会增加,并得到其他数据。我不知道去哪里,但是
返回
。我把它放在两行中,第一行只给出数据库中的第一行数据,第二行只给出数据库中的最后一行数据。(参见下面注释掉的行)。如何获得符合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
}
public Object[]populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay){
for(int i=0;原始数据库中的第一个
}
}
}
}
//返回数据->给出数据库中的最后一个数据
}

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

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();
}
public Object[]populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay)
{ 
列表结果=新列表();

对于(inti=0;i,您需要将所有结果保存在另一个数组中,然后返回该数组

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();
}
public Object[]populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay)
{ 
列表结果=新列表();

对于(int i=0;i您的问题如下:

  • 您的第一个return语句将退出
    for
    循环,并返回 第一个对象,如您的结果所示

  • 正如您所解释的,您的第二个返回声明将 返回在
    for
    循环中迭代的最后一条记录

  • 第三个问题是在这一行
    data=newobject[]{bar,name,
    code};
    。每次循环后,您都会将数据对象实例化为一个新的 对象数组,而不是将值添加到数组中,因此本质上,您总是创建一个包含1项的对象数组,这是最后一个迭代的项

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

    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;
        }
    
    public Object[]populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay)
    {
    Object[]result=新对象[outletList.size()];
    对于(int i=0;i
    您的问题如下:

  • 您的第一个return语句将退出
    for
    循环,并返回 第一个对象,如您的结果所示

  • 正如您所解释的,您的第二个返回声明将 返回在
    for
    循环中迭代的最后一条记录

  • 第三个问题是在这一行
    data=newobject[]{bar,name,
    code};
    。每次循环后,您都会将数据对象实例化为一个新的 对象数组,而不是将值添加到数组中,因此本质上,您总是创建一个包含1项的对象数组,这是最后一个迭代的项

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

    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;
        }
    
    public Object[]populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay)
    {
    Object[]result=新对象[outletList.size()];
    对于(int i=0;i
    试试这个:

    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;
    }
    
    public List populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay){
    列表数据=新的ArrayList();
    对于(int i=0;i
    试试这个:

    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;
    }
    
    public List populateTable(ArrayList outletList,字符串选择,int size,int monthCtr,String selDay){
    列表数据=新的ArrayList();
    对于(int i=0;i
    不会产生结果。push()是更好的方法吗?@NikhileshKV是的,刚刚注意到if.Netbeans为List result=new List();.返回错误。type List不带参数??您需要使用
    使用System.Collections.Generic;
    为Generic List生成结果。push()是更好的方法吗?@NikhileshKV yesp,刚刚注意到if.Netbeans为List result=new List();;返回了错误。type List不带参数??您需要使用
    using System.Collections.Generic;
    来处理泛型列表