If-statements
Statement
if (condition)
{
statements1
}
else
{
statements2
}
starts by evaluating condition, an expression of type boolean.
If the condition is true, then
statements1 are performed. If the condition is
false, then statements2 are performed. For example,
if(x > 0)
{
y = x;
}
else
{
y = -x;
}
ends with y equal to the absolute value of x.
|
Omitting the else-part
If you omit the word else and the
compound statement that
follows it, then nothing is done when the condition is false.
For example,
if(x < 0)
{
x = -x;
}
will always end with x ≥ 0, since it does nothing if
x ≥ 0.
|
Multiway tests
If you have more than two cases, use the following
indentation scheme.
if(test1)
{
…
}
else if(test2)
{
…
}
else if(test3)
{
…
}
else
{
…
}
|
Watch out: semicolons
Be careful about semicolons. Statement
if(n == 0);
{
System.out.printf("n is zero\n");
}
always writes "n is zero", regardless of the value of n.
The semicolon at the end of the first line is an empty statement, so
the if-statement says, if n equals 0, do nothing. The statement after
that is just a
compound statement.
This really does two statements in a row.
The coding standards require you not to use a semicolon as an empty statement. |
Making choices in expressions
Expression a ? b : c starts by evaluating expression a.
If a is true (or nonzero), then it yields the value of
expression b (and does not
compute c at all). If a is false (or 0), it yields the value
of expression c (and does not compute b at all).
For example,
int m = x > 0 ? x : -x;creates variable m and stores the absolute value of x into m. Only use this for expressions, not for statements. The coding standards require that. |
Assume that integer variable n already has a value. Write a statement that makes m equal to 3n+1 if n is odd and to n/2 if n is even. Answer
The coding standards forbid the following.
if(n == 0){}
else
{
z = 1;
}
Rewrite that into an acceptable form that does the same thing.
Answer
The coding standards disallow the following. Explain what is going on and how to avoid this.
if(x == 0)
{
y = 1;
}
else if(x != 0)
{
y = 2;
}
Answer
Suppose that you want to set y equal to
Explain why the following does not do the job.
if(x < 0)
{
y = -1;
}
if(x == 0)
{
y = 0;
}
else
{
y = 1;
}
Answer