2

Is there any way I could eliminate too much if and else statement in my program ? Here's my program

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();
String sSpecialty[][] = conn.sSpecialty();
int theTuitionFee;

ListView lvList;
ArrayAdapter<String> mAdapter;
ArrayList<String> list = new ArrayList<String>();
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<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
        for(int subloop=0; subloop<sSpecialty[loop].length; subloop++) {
        if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee
                && sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[4])) {
            list.add(sList[loop]);
            // RegAffil
        } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*") 
                && amountTF == 0
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);

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

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

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

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



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


            // admin and type 1-2
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF == 0
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);
            // admin and ambience 1-3
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);
            // admin and tuition 1-4
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);
            // admin and specialty 1-5
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF == 0
                && sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[4])) {
                            list.add(sList[loop]);



            // type and ambience 2-3
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);
            // type and tuition  2-4
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);
            // type and specialty 2-5
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF == 0
                && sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[4])) {
            list.add(sList[loop]);



            // ambience and tuition 3-4
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF >= theTuitionFee
                && thisFilter[4].equalsIgnoreCase("*")) {
            list.add(sList[loop]);
            // ambience and specialty 3-5
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && sAmbience[loop].equalsIgnoreCase(thisFilter[3])
                && amountTF == 0
                && sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[4])) {
            list.add(sList[loop]);

            // tuition and specialty 4-5
        } else if (thisFilter[0].equalsIgnoreCase("*")
                && thisFilter[1].equalsIgnoreCase("*")
                && thisFilter[3].equalsIgnoreCase("*")
                && amountTF >= theTuitionFee
                && sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[4])) {
            list.add(sList[loop]);


            // without specialty

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

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

        }


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

    } else if (sReg[loop].equalsIgnoreCase(thisFilter[0])
            && sAdmin[loop].equalsIgnoreCase(thisFilter[1])
            && thisFilter[3].equalsIgnoreCase("*")
            && amountTF >= theTuitionFee
            && sSpecialty[loop][subloop].equalsIgnoreCase(thisFilter[4])) {
        list.add(sList[loop]);
    }
    }
    }
    linkedHashSet.addAll(list);
      list.clear();
      list.addAll(linkedHashSet);
    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);
            }
        }
    }
//  Set<String> set = new HashSet<String>(list);

// Then you can create a new ArrayList, this will be a list with no duplicates
//ArrayList<String> newList = new ArrayList<String>(set);
    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 Hospitals Found",
                Toast.LENGTH_SHORT).show();
        navi.dia.show();
    }
    return v;
}

Now I could handle at least 5 and am planning to add more so if I have 10 now that will be 3 million combination .

1 Answers1

2

Use a switch:

switch (option) {
    case a:  //code executed if option == a
    case b:  //code executed if option == b
    case c:  //code executed if option == c
    ...
    default: //code executed if none of the previous cases are true
}
Blubberguy22
  • 1,344
  • 1
  • 17
  • 29
  • switch can handle compound conditions like these – Roberto Tellez Ibarra Jul 14 '15 at 14:08
  • 1
    @RobertoTellezIbarra by **these** do you mean the ones in the question? – Blubberguy22 Jul 14 '15 at 14:10
  • Yes my friend, if you look you will see there isn't pattern to follow. But... can you handle switch-case like ... `case 1 || 2` ...? – Roberto Tellez Ibarra Jul 14 '15 at 14:12
  • Sorry sir but I don't have any idea how can I start it with switch, this is my first time encountering this problem so I always use if statement , will you show me how can I start ? – carl john santos Jul 14 '15 at 14:16
  • @RobertoTellezIbarra I've edited the question for clarity. And no, see http://stackoverflow.com/questions/4704986/switch-statement-using-or http://stackoverflow.com/questions/207002/how-to-use-a-switch-case-or-in-php http://stackoverflow.com/questions/6513585/javascript-or-expression-in-a-switch-case and http://stackoverflow.com/questions/9883113/java-switch-statement-is-or-and-possible – Blubberguy22 Jul 14 '15 at 14:16
  • @carljohnsantos see the link in the word **switch** (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html) – Blubberguy22 Jul 14 '15 at 14:18
  • Sorry, I may said switch-case **can't** handle compound conditions like these, because the `&&` operator – Roberto Tellez Ibarra Jul 14 '15 at 14:20
  • @RobertoTellezIbarra If you rewrite the code correctly, it can. And there really isn't another answer to "eliminating if and else" besides either turning it into a switch or rewriting it. – Blubberguy22 Jul 14 '15 at 14:23
  • I am using switch for navigation only but in this scenario still no idea sir , I used these condition to filter my data in my array from another class. . I've edited my post and complete the program. – carl john santos Jul 14 '15 at 14:42
  • @carljohnsantos As I said to Roberto; you wanted to eliminate if and else, and to do that you'd either rewrite your code to use fewer if and else statements or rewrite it to use a switch statement. – Blubberguy22 Jul 14 '15 at 14:47