过滤二维数组/返回ArrayIndexOutofBoundException [英] Filtering 2d Array / Returning ArrayIndexOutofBoundException

查看:202
本文介绍了过滤二维数组/返回ArrayIndexOutofBoundException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的二维数组的结构与单阵列沿

This is the structure of my 2d array along with the single array

public String[] sList() {
    String list[] = { "Asia Medic Family Hospital and Medical Center",
            "Adventist University of the Philippine Health Service ",
            "Bautista Hospital",
            "Catalan Medical Hospital ", 
            "Catbagan General Hospital",
            "Cavite Center for Mental Health", 
            "Cavite Doctors' Medical Center, Inc",
            "Cavite Medical Center", 
            "Cavite Municipal Hospital",
            "Cavite Naval Hospital", 
            "Contreras Medical Clinic",
            "Crisostomo General Hospital", 
            "DBB Municipal Hospital",
            "DLSU-Dr. Rodolfo Poblete Memorial Hospital ", 
            "De La Salle University Medical Center",
            "Del Rosario Hospital" };
return list;
.....
public String[][] sSpecialty() {
    String list[][] = { 



            {"Specialty 1.0", "Specialty1.1", "Specialty1.2" , " " , " " },
            {"Specialty 2.0", "Specialty2.1", "Specialty2.2" , " " , " "},
            {"Specialty 3.0", "Specialty3.1", "Specialty3.2", "Specialty3.3", " " },
            {"Specialty 4.0", "Specialty4.1", "Specialty4.2", "Specialty4.3", "Specialty4.4" },
            {"Specialty 5.0", "Specialty5.1", "Specialty5.2", "Specialty5.3", "Specialty5.4" },
            {"Specialty 6.0", "Specialty6.1", "Specialty6.2", "Specialty6.3", "Specialty6.4" },
            {"Specialty 7.0", "Specialty7.1", "Specialty7.2", "Specialty7.3", "Specialty7.4" },
            {"Specialty 8.0", "Specialty8.1", "Specialty8.2", "Specialty8.3", "Specialty8.4" },
            {"Specialty 9.0", "Specialty9.1", "Specialty9.2", "Specialty9.3", "Specialty9.4" },
            {"Specialty 10.0", "Specialty10.1", "Specialy10.2", "Specialty10.3", "Specialty10.4" },
            {"Specialty 11.0", "Specialty11.1", "Specialty11.2", "Specialty11.3", "Specialty11.4" },
            {"Specialty 12.0", "Specialty12.1", "Specialty12.2", "Specialty12.3", "Specialty12.4" },
            {"Specialty 13.0", "Specialty13.1", "Specialty13.2", "Specialty13.3", "Specialty13.4" },
            {"Specialty 14.0", "Specialty14.1", "Specialty14.2", "Specialty14.3", "Specialty14.4" },
            {"Specialty 15.0", "Specialty15.1", "Specialty15.2", "Specialty15.3", "Specialty15.4" },
            {"Specialty 16.0", "Specialty16.1", "Specialty16.2", "Specialty16.3", "Specialty16.4" }
};
return list;

我怎么能过滤这些二维数组,比如我这里有一个项目,当我选择Specialty2.2结果是菲律宾卫生服务的降临大学,你可以看到他们都在第2个数组列表是。林精过滤单个阵列,但遇到问题时,我添加二维数组。

How can I filter these 2d array, example I have an item here when I select Specialty2.2 the result is Adventist University of the Philippine Health Service ,as you can see they're both in 2nd array list. Im fine filtering single array but encounter problem when I add 2d array.

for (int loop = 0; loop < sList.length; loop++) {
        String temp = sTuition[loop];
        theTuitionFee = Integer.parseInt(temp);

        // ALL filter selected
        if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee
                && sSpecialty[loop][loop].equalsIgnoreCase(thisFilter[5])
                ) {
            list.add(sList[loop]);

即时得到这部分ArrayIndexOutOfBoundsException异常&放大器;&安培; sSpecialty [回路] [循环] .equalsIgnoreCase(thisFilter [5])。任何建议,我怎么能摆脱这个问题的

Im getting ArrayIndexOutofBoundsException in this part " && sSpecialty[loop][loop].equalsIgnoreCase(thisFilter[5]) " any suggestions how can I get rid of this problem.

下面是当我只用单一阵列,如果您有任何其他方式来添加创建二维数组的全部程序。

Here's the full program when I only use single array if you have any other way to add the created 2d array.

public class SchoolListFragmentFilter extends Fragment implements
    OnItemClickListener {
NavigationDrawer navi = new NavigationDrawer();
String thisFilter[] = NavigationDrawer.theFilter;
int amountTF = NavigationDrawer.TuitionFee;
PSManilaDB conn = new PSManilaDB();
String sList[] = conn.sList();
String sReg[] = conn.sRegAffil();
String sAdmin[] = conn.sAdmin();
String sType[] = conn.sSize();
String sAmbience[] = conn.sAmbience();
String sTuition[] = conn.sTuitionFee();
int theTuitionFee;

ListView lvList;
ArrayAdapter<String> mAdapter;
ArrayList<String> list = new ArrayList<String>();
ArrayList<Integer> schoolIndex = new ArrayList<Integer>();

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View v = inflater
            .inflate(R.layout.layout_school_list, container, false);
    lvList = (ListView) v.findViewById(R.id.lvSchools);
    for (int loop = 0; loop < sList.length; loop++) {
        String temp = sTuition[loop];
        theTuitionFee = Integer.parseInt(temp);

        // ALL filter selected
        if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);

            // RegAffil
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*") && amountTF == 0) {
            list.add(sList[loop]);

            // Administration
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*") && amountTF == 0) {
            list.add(sList[loop]);

            // RoomAmbience
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);

            // Tuition Fee
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
            // regAffil and admin
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*") && amountTF == 0) {
            list.add(sList[loop]);
            // regAffil and type
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*") && amountTF == 0) {
            list.add(sList[loop]);
            // regaffil and ambience
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);
            // reg afill and tuition
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
            // admin and type
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*") && amountTF == 0) {
            list.add(sList[loop]);
            // admin and ambience
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);
            // admin and tuition
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
            // type and ambience
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);
            // type and tuition
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
            // ambience and tuition
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*") && amountTF == 0) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0) {
            list.add(sList[loop]);

        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee) {
            list.add(sList[loop]);

        }
    }
    mAdapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, list);
    lvList.setAdapter(mAdapter);
    lvList.setOnItemClickListener(this);

    schoolIndex.clear();
    ArrayList<String> finalFilterList = list;
    ArrayList<String> finalSchoolsList = new ArrayList<String>(
            Arrays.asList(this.sList));
    for (int i = 0; i < finalFilterList.size(); i++) {
        for (int o = 0; o < finalSchoolsList.size(); o++) {
            if (finalFilterList.get(i).equalsIgnoreCase(
                    finalSchoolsList.get(o))) {
                schoolIndex.add(o);
            }
        }
    }
    mAdapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, list);
    lvList.setAdapter(mAdapter);
    lvList.setOnItemClickListener(this);
    if (list.isEmpty()) {
        Toast.makeText(getActivity(), "No Schools Found",
                Toast.LENGTH_SHORT).show();
        navi.dia.show();
    }
    return v;
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    // TODO Auto-generated method stub
    int indx = schoolIndex.get(position);
    Toast.makeText(getActivity(), list.get(position), Toast.LENGTH_SHORT)
            .show();
    Intent woahIntent = new Intent("capstone.app.recommender.SCHOOLINFO");
    woahIntent.putExtra("key", indx);
    startActivity(woahIntent);
}
// && sAdmin[count].equals(thisFilter[1])
// && sType[count].equals(thisFilter[2]))

}

推荐答案

如果我理解正确, sList.length 16,但你的二维数组宽度仅为5。这意味着循环上升至16,但在 sSpecialty [回路] [循环] 必须小于第二个索引大于5这是你得到的IndexOutOfBoundsException异常。

If I understand correctly, sList.length is 16, but your 2d array width is only 5. This means that loop goes up to 16, but the second index in sSpecialty[loop][loop] must be less than 5. This is where you get the IndexOutOfBoundsException.

我presume您需要更换if语句的东西像

I presume you need to replace the if statement with something like

// ALL filter selected
boolean filtermatch=false;

for(int subloop=0;subloop<sSpecialty[loop].length;subloop++){
        if (sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[5])
                ) {
                   filtermatch=true;
        }
}

if(filtermatch && sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee;){
    list.add(sList[loop]);
}

第二个循环保持边界内所述第二索引

The second loop keeps the second index within bounds.

这篇关于过滤二维数组/返回ArrayIndexOutofBoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆