Compound Boolean Expressions

Sometimes we want to use logic more complicated than just “less than” or “equal to”. Project managers are constantly asking for software to be developed. And they want it to be done quickly, for minimal cost and at the highest quality. The rule is: We can make it fast, cheap or good. Pick two.

import java.util.Scanner;

public class ProjectManagerDecisionMaker {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        boolean bFast = false;
        boolean bCheap = false;
        boolean bGood = false;

        System.out.print("Do you want it fast? (y/n) ");
        String fast  = scan.nextLine();
        if (fast.equals("y")){
            bFast = true;
        }

        System.out.print("Do you want it cheap? (y/n) ");
        String cheap = scan.nextLine();
        if (cheap.equals("y")){
            bCheap = true;
        }

        System.out.print("Do you want it to be good? (y/n) ");
        String good = scan.nextLine();
        if (good.equals("y")){
            bGood = true;
        }

        if (bFast != true && bCheap == true && bGood == true)
            System.out.println("OK, we'll make it cheap and good. But it will take a while.");
        else if (bFast == true && bCheap !=true && bGood == true)
            System.out.println("OK, we'll make it good and have it to you quickly. But it will cost you!");
        else if (bFast == true && bCheap == true && bGood != true)
            System.out.println("Ok, it will be done right away and it won't cost you much but it won't be very good!" );
        else
            System.out.println("Sorry, you can only have two.");

    }

}

For complicated Boolean expressions you can use parentheses to group things, and you use the symbols && to mean “AND” and the symbols || to mean “OR”.

Truth table for AND:

Inputs Output(s)
A B A && B
true true true
true false false
false true false
false false false

Truth table for OR:

Inputs Output(s)
A B A || B
true true true
true false true
false true true
false false false