The output of the following line of code is: Not Done End

boolean notDone = false;
if (notDone = true)
   System.out.print("Not ");
if( notDone = false)
   System.out.print("Done ");
System.out.println("End");

The answer is false but I am having a hard time understanding why. Aren't the if statements setting notDone equal to true which would print Not and then go to the second loop and set notDone equal to false then print out Done and then End since none of the if statemends are comparing notDone to the initial notDone variable. Thanks!

The output of the following line of code is: Not Done End

Not according to Java. I just copied and executed the code you posted and it outputted Not End, exactly as expected. Have you tried it?

I know the answer is false but why? More specifically how does = operate in this situation?

hmm yes if statements are normally evaluate to a boolean, every if statement will end up with either evaluating to true or false:

if(1==1) {
} else if(1==2)
//will during runtime be evaluated as
if(true) {
} else if(false) {
}

however in your example you are not evaluating wether notDone is equal to true or false you are setting the value! so i think its because you are not uing the if statement correctly.

remeber
== is for equality/comparsion
= setting a variables contents.

Edited 4 Years Ago by DavidKroukamp

I know but the problem then is that shouldn't "Done" also print out since this code is only setting a variables contents?

Edited 4 Years Ago by FUTURECompEng

An if statement requires a boolean value.
An expression returns its value. I believe the value of an assignment statement is the value of the lefthand variable.

Edited 4 Years Ago by NormR1

Thanks.
Im reviewing basic java concepts and I know how to code them but when it comes to answering them on a piece of paper I feel as if I am oblivious xD

This question has already been answered. Start a new discussion instead.