Difference between revisions of "The If-Else Statement"

From CompSciWiki
Jump to: navigation, search
 
(22 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{Template:1010Topic|Chapter_TOC=[[Control Structures]]|Introduction=To further your knoledge on if-statments we will now add the else part to the if-statements. If-Else Statements add the element that if the conditions are false then "do" somthing else.}}
+
{{Template:1010Topic
 +
|Chapter_TOC=[[Control_Structures|Control Stuctures]]
 +
|Previous=[[The_If-Statement|The If Statement]]
 +
|Next=[[Conditions]]
 +
|Body=
 +
 
 +
==Introduction==
 +
The [[Glossary#if_else | '''If-Else statement''']] adds further functionality to the '''If-Statement''' discussed in the [[The If-Statement|previous section]]. If-Else Statements add the ability to tell the computer what to do if the condition tested in the if-statement returns a value of ''false''.
  
 
==The If-Else Statement==
 
==The If-Else Statement==
Sometimes it is not sufficient to simply tell the computer "If such-and-such condition is true do this".  Somtimes you will want to say "If such-and-such is true do this, ''otherwise'' do that".  A simple way of doing this would be to have a separate if-statement that will return the opposite value of the first:
+
Sometimes it is not sufficient to simply tell the computer "If this condition is true execute this code".  Sometimes you will want to say "If this condition is true execute this code, ''otherwise'' execute a different set of code".  A simple way of doing this would be to have a separate if-statement that will return the opposite value of the first:
  
<pre>
+
{{CodeBlock
if (number%2 == 0)
+
|Code=
{
+
if (number%2 == 0)
    System.out.println("The number is even");
+
{
}//if
+
    System.out.println("The number is even");
 +
}//if
  
if (number%2 !=0)
+
if (number%2 !=0)
{
+
{
    System.out.println("The number is odd");
+
    System.out.println("The number is odd");
}//if
+
}//if
</pre>
+
}}
  
While this approach works, it is needlessly complicated; there is a better way of doing the same task, but with less work.  The keyword '''else''' can be used to tell the computer do execute a different body of code if the condition of an if-statement returns ''false''.  We can rewrite the code from above to take advantage of this keyword like this:
+
While this approach works, it is needlessly complicated. There is a better way of doing the same task, but with less work.  The keyword '''else''' can be used to tell the computer to execute a different body of code only if the condition of an if-statement returns ''false''.  We can rewrite the code from above to take advantage of this keyword like this:
  
<pre>
+
{{CodeBlock
if (number%2 == 0)
+
|Code=
{
+
if (number%2 == 0)
    System.out.println("The number is even");
+
{
}//if
+
    System.out.println("The number is even");
 
+
}//if
else
+
else
{
+
{
    System.out.println("The number is odd");
+
    System.out.println("The number is odd");
}//else
+
}//else
</pre>
+
}}
  
 
If we step through this last example the computer will evaluate the condition ''number%2 == 0'' and check the result.  If the result is ''true'' the body of the if-statement will be executed, just like in the previous examples.  If the result is ''false'' then the body of the '''else-statement''' is executed.
 
If we step through this last example the computer will evaluate the condition ''number%2 == 0'' and check the result.  If the result is ''true'' the body of the if-statement will be executed, just like in the previous examples.  If the result is ''false'' then the body of the '''else-statement''' is executed.
Line 36: Line 44:
 
Together the keywords ''if'', ''else'', the condition, and the two bodies form a code-block known as an '''''if-else block''''' or '''''if-else statement'''''.
 
Together the keywords ''if'', ''else'', the condition, and the two bodies form a code-block known as an '''''if-else block''''' or '''''if-else statement'''''.
  
 
+
==Anatomy of the If-Else Statement==
===Anatomy of the If-Else Statement===
+
 
The if-else statement is made up of the following parts:
 
The if-else statement is made up of the following parts:
 
*the keyword '''if'''
 
*the keyword '''if'''
Line 46: Line 53:
  
 
The general form of an if-else statement is:
 
The general form of an if-else statement is:
<pre>
+
{{CodeBlock
if (condition)
+
|Code=
{
+
if (condition)
    code to execute if condition == true
+
{
}
+
    //code to execute if condition is true
 +
}
 +
 
 +
else
 +
{
 +
    //code to execute if condition is false
 +
}
 +
}}
 +
 
 +
==If-Else Ladders==
 +
Now that you know that ''if'' statements be be connected using an ''else'', we can take that one step further and throw '''else-if'' statements into the mix. We use '''else-if''' statements to create long ladders of '''if''' statements. Generally, whenever you have a bunch of ''if'' statements that are related to each other, you combine them into one big ladder of statements. This can also prevent certain problems from occurring. Let'ss begin by presenting a simple problem below.
 +
 
 +
{{CodeBlock
 +
|Code=
 +
int x = 5;
 +
 
 +
if (x > 4)
 +
{
 +
  System.out.println("x is greater than 4");
 +
}
 +
 
 +
if (x > 2)
 +
{
 +
  System.out.println("x is greater than 2 but less than 5");
 +
}
 +
 
 +
}}
 +
 
 +
In this case both lines will be printed because '''x''' is greater than 2 and 4. We only want to print out "x is greater than 4". We can use an ''if-else'' statement to fix this problem. Here is the corrected code:
 +
 
 +
{{CodeBlock
 +
|Code=
 +
 
 +
int x = 5;
 +
 
 +
if (x > 4)
 +
{
 +
  System.out.println("x is greater than 4");
 +
}// if
 +
else if (x > 2)
 +
{
 +
  System.out.println("x is greater than 2 but less than 5");
 +
}// else if
 +
}}
 +
 
 +
The addition of the ''else-if'' statement has solved the problem at hand. Now the correct output will be printed regardless of the value of '''x'''.
 +
 
 +
You are allowed to have as many ''else-if'' statements as you want. The only requirement is that the start of the ladder begins with an ''if'' statement. You are also allowed to use ''else'' statements. The requirement for ''else'' statements is that you are only allowed 1 and it must be at the very end of the ladder. The next program will display a full blown ''if - else if - else'' ladder.
 +
 
 +
This program asks the user for two sports scores and tells the user which team won or if the game was a draw.  The key components to pay attention to are lines '''07 to 14'''.
 +
 
 +
{{CodeBlock
 +
|Code=
 +
 
 +
  int scoreA = 25;
 +
  int scoreB = 30;
 +
 
 +
  if(scoreA > scoreB)
 +
  {
 +
      System.out.println("Team A won");
 +
  }//if
 +
 
 +
  else if(scoreA < scoreB)
 +
  {
 +
    System.out.println("Team B won");
 +
  }//else if
 +
 
 +
  else
 +
  {
 +
      System.out.println("The game was a draw");
 +
  }//else
 +
}}
 +
 
 +
The preceding code may also be written as:
 +
 
 +
{{CodeBlock
 +
|Code=
 +
 
 +
  int scoreA = 25;
 +
  int scoreB = 30;
 +
 
 +
  if(scoreA > scoreB)
 +
      System.out.println("Team A won");
 +
  else if(scoreA < scoreB)
 +
    System.out.println("Team B won");
 +
  else
 +
      System.out.println("The game was a draw");
 +
}}
 +
 
 +
==Summary==
 +
 
 +
The '''if-else statement''' is used when you want to execute a certain piece of code when the '''condition''' is ''true'', and if the condition is ''false'' you would like a different piece of code to execute. Note that this could also be done with multiple if-statements, but this is very inefficient, and also very complicated.
 +
 
 +
 
  
else
+
The '''else-if statement''' is used if you want to compare more than one '''condition''', where the second condition happens only if the first ''fails''. These ''else-if'' can be chained for as long as you want, and can also end with an ''else'' statement.
{
+
}}
    code to execute if condition == false
+
}
+
</pre>
+

Latest revision as of 22:29, 8 December 2011

COMP 1010 Home > Control Stuctures


Introduction

The If-Else statement adds further functionality to the If-Statement discussed in the previous section. If-Else Statements add the ability to tell the computer what to do if the condition tested in the if-statement returns a value of false.

The If-Else Statement

Sometimes it is not sufficient to simply tell the computer "If this condition is true execute this code". Sometimes you will want to say "If this condition is true execute this code, otherwise execute a different set of code". A simple way of doing this would be to have a separate if-statement that will return the opposite value of the first:

 if (number%2 == 0)
 {
     System.out.println("The number is even");
 }//if

 if (number%2 !=0)
 {
     System.out.println("The number is odd");
 }//if 

While this approach works, it is needlessly complicated. There is a better way of doing the same task, but with less work. The keyword else can be used to tell the computer to execute a different body of code only if the condition of an if-statement returns false. We can rewrite the code from above to take advantage of this keyword like this:

 if (number%2 == 0)
 {
     System.out.println("The number is even");
 }//if
 else
 {
     System.out.println("The number is odd");
 }//else 

If we step through this last example the computer will evaluate the condition number%2 == 0 and check the result. If the result is true the body of the if-statement will be executed, just like in the previous examples. If the result is false then the body of the else-statement is executed.

The keyword else and the corresponding body form what is called an else-block or else-statement. It is very important to note that an else-block is always associated with an if-block, and each if-block can only ever be associated with zero or one else-blocks.

Together the keywords if, else, the condition, and the two bodies form a code-block known as an if-else block or if-else statement.

Anatomy of the If-Else Statement

The if-else statement is made up of the following parts:

  • the keyword if
  • the condition
  • the body of the if-statement
  • the keyword else
  • the body of the else-statement

The general form of an if-else statement is:

 if (condition)
 {
     //code to execute if condition is true
 }

 else
 {
     //code to execute if condition is false
 } 

If-Else Ladders

Now that you know that if statements be be connected using an else, we can take that one step further and throw else-if statements into the mix. We use else-if' statements to create long ladders of if statements. Generally, whenever you have a bunch of if statements that are related to each other, you combine them into one big ladder of statements. This can also prevent certain problems from occurring. Let'ss begin by presenting a simple problem below.

 int x = 5;

 if (x > 4)
 {
   System.out.println("x is greater than 4");
 }

 if (x > 2)
 {
   System.out.println("x is greater than 2 but less than 5");
 } 

In this case both lines will be printed because x is greater than 2 and 4. We only want to print out "x is greater than 4". We can use an if-else statement to fix this problem. Here is the corrected code:

 int x = 5;

 if (x > 4)
 {
   System.out.println("x is greater than 4");
 }// if 
 else if (x > 2)
 {
   System.out.println("x is greater than 2 but less than 5");
 }// else if 

The addition of the else-if statement has solved the problem at hand. Now the correct output will be printed regardless of the value of x.

You are allowed to have as many else-if statements as you want. The only requirement is that the start of the ladder begins with an if statement. You are also allowed to use else statements. The requirement for else statements is that you are only allowed 1 and it must be at the very end of the ladder. The next program will display a full blown if - else if - else ladder.

This program asks the user for two sports scores and tells the user which team won or if the game was a draw. The key components to pay attention to are lines 07 to 14.

 int scoreA = 25;
  int scoreB = 30;

  if(scoreA > scoreB)
  {
      System.out.println("Team A won");
  }//if

  else if(scoreA < scoreB)
  {
     System.out.println("Team B won");
  }//else if

  else
  {
      System.out.println("The game was a draw");
  }//else 

The preceding code may also be written as:

 int scoreA = 25;
  int scoreB = 30;

  if(scoreA > scoreB)
      System.out.println("Team A won");
  else if(scoreA < scoreB)
     System.out.println("Team B won");
  else
      System.out.println("The game was a draw"); 

Summary

The if-else statement is used when you want to execute a certain piece of code when the condition is true, and if the condition is false you would like a different piece of code to execute. Note that this could also be done with multiple if-statements, but this is very inefficient, and also very complicated.


The else-if statement is used if you want to compare more than one condition, where the second condition happens only if the first fails. These else-if can be chained for as long as you want, and can also end with an else statement.

Previous Page: The If Statement Next Page: Conditions