|
The following is an if-statement that computes the "shippingCharge":
double shippingCharge;
shippingCharge = 5.00; // Assume the cost is $5
if ( country is equal to "USA") )
if ( state is equal to "HI" )
shippingCharge = 10.00; // Hawaii will cost $10
else
shippingCharge = 20.00; // Outside USA is $20
|
| First Way | Second Way |
|---|---|
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
|
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
|
You can see the if-else association better after indenting it properly:
| First Way | Second Way |
|---|---|
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
|
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
|
Futhermore the two interpretations result in different program execution:
(The latter method is used when the resolve an ambiguity when an ambiguity is discovered after a language has been designed and in use)
if ( boolean expression )
one-or-more-statement
fi
|
| First Way in new syntax | Second Way in new syntax |
|---|---|
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
fi
else
shippingCharge = 20.00;
fi
|
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
fi
fi
|
There is ONLY ONE WAY to read each of the program segment above !! (try it !!!)
|
double shippingCharge;
shippingCharge = 5.00;
if ( country.equals("USA") )
if ( state.equals("HI") )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
|
It will associate the else keyword with the second if keyword
double shippingCharge;
shippingCharge = 5.00;
if ( country equals "USA" )
if ( state equals "HI" )
shippingCharge = 10.00;
else
shippingCharge = 20.00;
|
So, the proper way to write the program is:
double shippingCharge;
shippingCharge = 5.00;
if ( country.equals("USA") )
{
if ( state.equals("HI") )
shippingCharge = 10.00; // Shipping to Hawaii is $10
}
else
shippingCharge = 20.00; // Shipping to outside USA is $20
|
Associating the else with the second if will now result in a syntax error !!!