Chapter 5: Booleans and Flow Control

The exercises here are taken from my book, The Java Developer's Resource.

Quiz

  1. Is a float large enough to count the king's wheat?

    Yes.

  2. Why isn't there a ** or a // operator?

    Multiplying or dividing by one doesn't change the number. The following loops are infinite.

    
    	int i = 1; 
    	while (i** < 2) {
    	  ...
    	} 
    	
    	while (i // > 0) {
    	  ...
    	}	
    	
    You may also note that // starts a one line comment (Though it wouldn't if there were a need for a real // operator).

  3. Given that a is a boolean variable, what's the value of (a || !a)?

    According to classical, Aristotelian logic and to Java (a || !a) is always true.

  4. Here's one that stumped the author until he got some help from comp.lang.java. What's wrong with this program?
public class BytePrint {

  public void main(String[] args) {
    for (byte b = -128; b <= 127; b++) {
      System.out.println(b);
    }

  }

}
The <= should be <. Otherwise one is added to 127, which produces 128. However 128 is too large to fit in a byte so it wraps around to -128 which starts the loop over. That is, this is an infinite loop. You can also fix the problem by making b an int.

Exercises

  1. Write the FahrToCelsius program of the last chapter using a for loop instead of a while loop.

    // Print a Fahrenheit to Celsius table
    
    class FahrToCelsius  {
    
      public static void main (String args[]) {
      
        double fahr, celsius;
    
        for (fahr = 0.0; fahr <= upper; fahr += 20.0) { 
          celsius = (5.0 / 9.0) * (fahr-32.0);
          System.out.println(fahr + " " + celsius);
        } 
    
      } 
    
    } 
  2. Write the combination lock programs of Chapter 3 using for loops.

    class lock {
    
      public static void main(String[] args)  {
        
         for (int i = 0; i <= 36; i++) {
           for ( int j = 0; j <= 36; j++) {
             for  (int k = 0; k <= 36; k++) {
               System.out.println(i + " " + j + " " + k);
             }
           }
         }
         
      }
      
    }
    
    class badlock {
    
      public static void main(String[] args)  {
        
         for (int i = 2; i <= 36; i += 3) {
           for ( int j = 2; j <= 36; j += 3) {
             for  (int k = 2; k <= 36; k += 3) {
               System.out.println(i + " " + j + " " + k);
             }
           }
         }
         
      }
      
    }


[ Exercises | Cafe Au Lait | Books | Trade Shows | Links | FAQ | Tutorial | User Groups ]

Copyright 1996 Elliotte Rusty Harold
elharo@sunsite.unc.edu
Last Modified February 21, 1998