|
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 !!!