// This appears in Core Web Programming from
// Prentice Hall Publishers, and may be freely used
// or adapted. 1997 Marty Hall, hall@apl.jhu.edu.

/** Some examples of the switch statement. */

public class Switch {
  public static void main(String[] args) {
    System.out.println(number(9));
    System.out.println(number(5));
    numberVerbose(5);
    numberVerboseFixed(5);
  }

  public static String number(int digit) {
    switch(digit) {
      case 0: return("zero");
      case 1: return("one");
      case 2: return("two");
      case 3: return("three");
      case 4: return("four");
      case 5: return("five");
      case 6: return("six");
      case 7: return("seven");
      case 8: return("eight");
      case 9: return("nine");
      default: return("Not a single digit");
    }
  }

  // Incorrect version that forgets about case
  // fall through. Children should not try this at home.
  
  public static String numberVerbose(int digit) {
    String result;
    switch(digit) {
      case 0: System.out.println("zero");
              result = "zero";
      case 1: System.out.println("one");
              result = "one";
      case 2: System.out.println("two");
              result = "two";
      case 3: System.out.println("three");
              result = "three";
      case 4: System.out.println("four");
              result = "four";
      case 5: System.out.println("five");
              result = "five";
      case 6: System.out.println("six");
              result = "six";
      case 7: System.out.println("seven");
              result = "seven";
      case 8: System.out.println("eight");
              result = "eight";
      case 9: System.out.println("nine");
              result = "nine";
      default: System.out.println("Not a single digit");
               result = "Not a single digit";
    }
    return(result);
  }

  // Correct version: uses the break statement
  // to get jump out of the switch.
  
  public static String numberVerboseFixed(int digit) {
    String result;
    switch(digit) {
      case 0: System.out.println("zero");
              result = "zero";
              break;
      case 1: System.out.println("one");
              result = "one";
              break;
      case 2: System.out.println("two");
              result = "two";
              break;
      case 3: System.out.println("three");
              result = "three";
              break;
      case 4: System.out.println("four");
              result = "four";
              break;
      case 5: System.out.println("five");
              result = "five";
              break;
      case 6: System.out.println("six");
              result = "six";
              break;
      case 7: System.out.println("seven");
              result = "seven";
              break;
      case 8: System.out.println("eight");
              result = "eight";
              break;
      case 9: System.out.println("nine");
              result = "nine";
              break;
      default: System.out.println("Not a single digit");
               result = "Not a single digit";
    }
    return(result);
  }
}

