Search code examples
booleanboolean-logicboolean-expressionboolean-operations

Programming issue boolean logic


I have an issue where I need to create some buttons depending on some boolean values.

If button1 = true I should create button1, if button2 = true I should create button2 and if button3 = true I should create button3.

So there can be 8 combinations:

1 - button1, button2, button3 (button1 = true, button2 = true, button3 = true)
2 - button1, button2 (button1 = true, button2 = true, button3 = false)
3 - button1, button3
4 - button2, button3
5 - button2, button1
6 - button1
7 - button2
8 - button3

My issue is how to find the correct combination out of the 8.


Solution

  • Not sure what the question really is: seems like programming 101 (or programming for dummies page 2). The obvious approach:

    if (button1) { createButton1(); }
    if (button2) { createButton2(); }
    if (button3) { createButton3(); }
    

    If the combinations are a bit more complex, you might need separate statements:

    if (button1 && button2 && button3) {
        // create required buttons for case 1
    } else if (button1 && button2) {
        // create required buttons for case 2
    }
    ...
    

    The order of the cases in the questions are ok - you need most specific to least specific (if "just button1" was first, it would "steal" all the other cases relying on button 1.)

    Another approach is to encode the booleans into an int and use a switch. This is probably a bit more extensible if you might need to add complex conditions for buttons 4 5 and 6

    int choice = button1 ? 1 : 0;
    choice += button2 ? 2 : 0;
    choice += button3 ? 4 : 0;
    switch(choice) {
        case 0: break; // no buttons
        case 1: // just button1
        case 2: // just button2
        case 3: // button1 and button2
        ...
    }