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