Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check and match the possible combinations of arraylist elements

String [] A = {"High","Medium","Low"};
String [] B = {"High","Medium","Low"};
String [] C = {"High","Medium","Low"};
String [] D = {"High","Medium","Low"};
String [] E = {"High","Medium","Low"};
String [] F = {"High","Medium","Low"};

JComboBox Ai = new JComboBox(A); JComboBox Bi = new JComboBox(B);
JComboBox Ci = new JComboBox(C); JComboBox Di = new JComboBox(C);
JComboBox Ei = new JComboBox(E); JComboBox Fi = new JComboBox(F);

....

//add the user choice in arrayList
ArrayList<String> a = new ArrayList<String>();
a.add((String) Ai.getSelectedItem());
a.add((String) Bi.getSelectedItem());
a.add((String) Ci.getSelectedItem());
a.add((String) Di.getSelectedItem());
a.add((String) Ei.getSelectedItem());
a.add((String) Fi.getSelectedItem());

EDITED:
Scenario: There are 6 groups (Ai,Bi,Ci,Di,Ei,Fi) of choice. On each group, there are 3 sub choice (High(H),Medium(M),Low(L)).The user need to choose one on each of the 6 groups

The choice could be e.g. "HHHLLL" or "MMMLLM" or "HHLLMM" etc.

What is the best way to check and match the user choice without writing many else if ? e.g.

if(Ai=="High" && Bi=="High" && Ci=="Low" && Di=="High" && Ei=="Low" && Fi=="Medium") {
    System.out.println("Good Choice"); 
}

Thank you.

like image 962
Jessy Avatar asked Feb 02 '26 04:02

Jessy


1 Answers

First off, you don't need to give a new list of choices to each JComboBox.

String[] choices = {"High", "Medium", "Low"};

JComboBox ai = new JComboBox(choices);
JComboBox bi = new JComboBox(choices);
JComboBox ci = new JComboBox(choices);
JComboBox di = new JComboBox(choices);
JComboBox ei = new JComboBox(choices);
JComboBox fi = new JComboBox(choices);

(Variables in Java usually start with a lowercase letter, so I changed the variable names to lowercase.)


Next, you can put all six JComboBoxes in an array. You'll see why this is useful in a moment.

JComboBox[] boxes = {ai, bi, ci, di, ei, fi};

Now, you can make your user choice string like this:

// Create an ArrayList of Strings, where each string is either "H", "M", or "L"
ArrayList<String> userChoice = new ArrayList<String>()

for (JComboBox box : boxes) {
    // Go through this code once for each JComboBox in boxes
    // The first time through, "box" means the first JComboBox
    // The second time through, "box" is the second JComboBox, etc.
    if (box.getValue().equals("High")) {
         userChoice.add("H");
    } else if (box.getValue().equals("Medium")) {
         userChoice.add("M");
    } else if (box.getValue().equals("Low")) {
         userChoice.add("L")
    }
}

That for-each loop might not be familiar to you. It means "go through this code once for each something in array of somethings."


If you use this code, you'll end up with an ArrayList called userChoice that has something like ["H", "H", "M", "M", "L", "L"].

like image 59
Wesley Avatar answered Feb 04 '26 00:02

Wesley