// File: ConversionProject2.java
// Date: 6/27/2007
// Author: Mike Elms and Nick Duchon

import java.util.*;

public class ConversionProject2 {

// ND$ remove static from everything except main

   int numberOfConversions = 0;
	
   double myCelsius   (double f) {
      return (f - 32) * 5.0 / 9.0;} // end myCelsius(double f)

   double myFahrenheit(double c) {
      return c * 9.0 / 5.0 + 32;}   // end myFahrenheit(double c)

   double myMile      (double k) {
      return k*1.61;}               // end myMile (double)

   double myKilometer (double m) {
      return m*0.62;}               // end myKilometer (double)


   int celsiusToFahrenheit(Scanner stdin)
   {
      double celsius;
      double fahrenheit;
   
      System.out.println("Enter the temperature in celsius: ");
      celsius = stdin.nextDouble();
      fahrenheit = myFahrenheit(celsius);
      numberOfConversions++;
   
      System.out.println("The temperature in fahrenheit is " + fahrenheit);
      return 0;
   }

   int fahrenheitToCelsius(Scanner stdin)
   {
      double celsius;
      double fahrenheit;
   
      System.out.println("Enter the temperature in fahrenheit: ");
      fahrenheit = stdin.nextDouble();
   
      celsius = myCelsius(fahrenheit);
      numberOfConversions++;
   
      System.out.println("The temperature in celsius is " + celsius);
      return 0;
   }

   int kilometerToMile(Scanner stdin)
   {
      double kilometer;
      double mile;
      System.out.println("Enter the distance in kilometers: ");
      kilometer = stdin.nextDouble();
      mile= myMile(kilometer);
      numberOfConversions++;
      System.out.println("The distance in miles is " + mile);
      return 0;
   }

   int mileToKilometer(Scanner stdin)
   {
      double kilometer;
      double mile;
      System.out.println("Enter the distance in miles: ");
      mile = stdin.nextDouble();
      kilometer = myKilometer(mile);
      numberOfConversions++;
      System.out.println("The distance in kilometers is " + kilometer);
      return 0;
   }

// return value:
//   true = continue looping on this menu, false = stop
   boolean tempMenu(Scanner stdin)
//    static boolean tempMenu(Scanner stdin)
   {
      int x;
   
      System.out.println("Temperature:\n\n");
      System.out.println("1) Celsius to Fahrenheit");
      System.out.println("2) Fahrenheit to Celsius");
      System.out.println("3) Menu");
   
      x = stdin.nextInt();
   
      if (x == 1)      celsiusToFahrenheit(stdin);
      else if (x == 2) fahrenheitToCelsius(stdin);
      else if (x == 3) 
         return false;
      else             System.out.println("Error");
   
      return true;
   } // end tempMenu

// return value:
//   true = continue looping on this menu, false = stop
   boolean distMenu(Scanner stdin)
//    static boolean distMenu(Scanner stdin)
   {
      int x;
      System.out.println("Distance:\n\n");
      System.out.println("1) Kilometer to Mile");
      System.out.println("2) Mile to Kilometer");
      System.out.println("3) Menu");
      
      x = stdin.nextInt();
      
      switch (x) {
         case 1:  kilometerToMile(stdin); 
            break;
         case 2:  mileToKilometer(stdin); 
            break;
         case 3:  
            return false;
         default: System.out.println("Error");
      } // end switching on menu selection   
      return true; // ND: use return value looping
   } // end distMenu

// return value:
//   true = continue looping on this menu, false = stop
   boolean menu(Scanner stdin) // ND$
//    static boolean menu(Scanner stdin)
   {
      int x;
   
      System.out.println("Metric Conversion:\n\n");
      System.out.println("1) Temperature");
      System.out.println("2) Distance");
      System.out.println("3) Exit");
   
      x = stdin.nextInt();
   
      switch(x) { // use return value looping
         case 1: 
            while (tempMenu(stdin)); 
            break;
         case 2: 
            while (distMenu(stdin)); 
            break;
         case 3: 
            return false; // no need for break!
         default: System.out.println("Error");
      } // end switch
   
      return true; // ND: USE the return value
   } // end menu - main menu

   public static void main(String args[])
   {
      Scanner stdin = new Scanner(System.in);
      System.out.println("Final");
      // ND$ instantiate this, and use in menu call on next line
      ConversionProject2 cp = new ConversionProject2 (); 
      while (cp.menu(stdin)); // ND: use the return value this way
      System.out.print(cp.numberOfConversions + " number of conversions.");
 
   } // end main
}