Shei7141
Shei7141

Reputation: 3

Java and and or operator not working

I am using the following statement to break out of the loop when two conditions met:

while (true)
    {
        if (uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2)
                || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4) 
                &&
                uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2)){
            break;
        }

The loops breaks when one or both && conditions are met. However, I wrote the code to break the loop ONLY when both conditions are true.

Is there something missing from above statement? Regards, Shei7141.

Upvotes: 0

Views: 5054

Answers (3)

Ashish
Ashish

Reputation: 11

while (true) { if ((uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2) || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4)) && (uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2))) break; }

Upvotes: 0

Jigar Joshi
Jigar Joshi

Reputation: 240996

wrap them in parentheses

if ( (uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2)
                || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4))
&&
(uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2)) )

or

even make a HashSet of correct answers and do this will be clean and will be efficient too

answers1Set.contains(uAnswer1) && answers2Set.contains(uAnswer2)  

Upvotes: 3

Ankur Singhal
Ankur Singhal

Reputation: 26077

above code shows that uAnswer1.equals(answerB4) && uAnswer2.equals(answerS1) are in AND condition

while (true)
    {
        if ((uAnswer1.equals(answerB1) || uAnswer1.equals(answerB2)
                || uAnswer1.equals(answerB3)|| uAnswer1.equals(answerB4)) 

                &&

                (uAnswer2.equals(answerS1)|| uAnswer2.equals(answerS2))){
            break;
        }

Upvotes: 0

Related Questions