Transcript CS 177

Week 4 - Monday



What did we talk about last time?
Wrapper classes
if statements



So far we have only considered Java
programs that do one thing after another, in
sequence
Our programs have not had the ability to
choose between different possibilities
Now, they will!

The if-statement:
int x = 4;
if( x < 5 )
System.out.println("x is small!");


x is small will only print out if x is less
than 5
In this case, we know that it is, but x could
come from user input or a file or elsewhere
Any
boolean
The if part
expression
if( condition )
statement;
Any single executable
statement


Any statement that evaluates to a boolean
is legal
Examples:
 x == y
 true
 Character.isDigit(‘r’)
 s.equals("Help me!") && (z < 4)


The most common condition you will find is a
comparison between two things
In Java, that comparison can be:






==
!=
<
<=
>
>=
equals
does not equal
less than
less than or equal to
greater than
greater than or equal to



You can use the == operator to compare any
two things of the same type
Different numerical types can be compared
as well (3 == 3.0)
Be careful with double types,
0.33333333 is not equal to 0.33333332
int x = 3;
if( x == 4 )
System.out.println("This doesn't print");



Any place you could have used the ==
operator, you can use the != operator
If == gives true, the != operator will always
give false, and vice versa
If you want to negate a condition, you can
always use the ! as a not
if( x != 4 )
is the same as
if( !(x == 4) )


Remember, a single equal sign (=) is the
assignment operator (think of a left-pointing
arrow)
A double equals (==) is a comparison
operator
int y = 10;
if( y = 6 ) //compiler error!
boolean b = false;
if( b = false ) //no error but wrong



Inequality is very important in programming
You may want to take an action as long as a
value is below a certain threshold
For example, you might want to keep bidding
at an auction until the price is greater than
what you can afford
if( x <= 4 )
System.out.println("x is less than 5");

Watch for strict inequality (<) vs. non-strict
inequality (<=)



Just like less than or equal to, except the
opposite
Note that (because of the All-Powerful Math
Gods) the opposite of <= is > and the
opposite of >= is <
Thus,
 !( x <= y ) is equivalent to ( x > y )
 !( x >= y ) is equivalent to ( x < y )



Sometimes you have to make a decision
If a condition is true, you go one way, if not,
you go the other
For example:
 If I pass CS121,
▪ Then I throw a kegger to celebrate
 Otherwise,
▪ I punch Dr. Wittman in the face




Notice the nature of this kind of condition
Both outcomes cannot happen
Either a kegger gets thrown or Dr. Wittman
gets punched in the face
For these situations, we use the else
construct
if( condition )
statement1;
else
statement2;
Two different
outcomes
Scanner in = new Scanner(System.in);
int balance = in.nextInt();
if( balance < 0 )
System.out.println("You are in debt!");
else
System.out.println("You have $" +
balance);


No problem
Use braces to treat a group of statements like
a single statement
if( x == 4 )
{
System.out.println("I hate 4");
System.out.println("Let's change x.");
x = 10;
}
if( condition )
{
statement1;
A whole statement2;
bunch of
statements …
statementn;
}



Sometimes you want to make one set of
decisions based on another set of decisions
if-statements can be nested inside the
bodies of other if-statements
You can put if-statements inside of ifstatements inside of if-statements… going
arbitrarily deep
if( condition1 )
{
statement1;
if( condition2 )
{
if( condition3 )
statement2;
…
}
}

For the next example, recall the 4 quadrants
of the Cartesian coordinate system
y
2
1
(0,0)
-x
3
4
-y
x

Find which quadrant the point (x,y) is in
if( x >= 0.0 )
{
if( y >= 0.0 )
System.out.println("Quadrant
else
System.out.println("Quadrant
}
else
{
if( y >= 0.0 )
System.out.println("Quadrant
else
System.out.println("Quadrant
}
1");
4");
2");
3");

You can list a sequence of exclusive
possibilities using nesting:
if( index == 1 )
System.out.println("First");
else if( index == 2 )
System.out.println("Second");
else if( index == 3 )
System.out.println("Third");
else
System.out.println(index + "th");


A block of code is treated just like one statement
A whole if-else is treated the same
if( … )
statement1;
else if( … )
statement2;
else
statement3;
=
if( … )
{
statement1;
}
else
{
if( … )
statement2;
else
statement3;
}


if pitfalls
Examples



Keep reading Chapter 4 of the textbook
Keep working on Project 1 (due this Friday)
Exam 1 is next Monday