/**
 * This class will hold information for a coin.
 * It will also allow us to perform coin operations.
 * 
 * @author Mr. Merlis 
 * @version 12/12/2007
 */

import java.util.Random;  // use the Random Class

public class Coin
{
    // instance variables
    private double myValue;     // stores the value of the coin
    private String myName;      // the name of the coin
    private Random rand = new Random();
    
    /**
     * Default constructor - makes a penny
     */
    public Coin()
    {
        myValue = .01;
        myName = "penny";
    }//===================================

    /**
     * This constructor creates a coin with the 
     * parameter specified value.
     */
    public Coin(double newValue)
    {
        myValue = newValue;
        if(myValue == .50)  // this is a half dollar
            myName = "half dollar";
        else if(myValue == .25) // quarter
            myName = "quarter";
        else if(myValue == .10) // dime
            myName = "dime";
        else if(myValue == .05) // nickel
            myName = "nickel";
        else if(myValue == .01) // penny
            myName = "penny";     
        else
            myName = "unknown coin";
    }//===================================    
  
    /**
     * This constructor creates a coin with the 
     * parameter specified name.
     */
    public Coin(String newName)
    {
        myName = newName;
        
        if(myName.equalsIgnoreCase("half dollar"))  // this is a half dollar        
            myValue = .50;
        else if(myName.equalsIgnoreCase("quarter"))  // this is a quarter
            myValue = .25;
        else if(myName.equalsIgnoreCase("dime"))  
            myValue = .10;
        else if(myName.equalsIgnoreCase("nickel"))  
            myValue = .05;
        else if(myName.equalsIgnoreCase("penny"))  
            myValue = .01;
        else
        {
            myValue = 0;
            myName = "unknown coin";
        }
    }//===================================   
    
    /**
     * This method will return the value of the coin.
     */
    public double getMyValue()
    {
        return myValue;
    }//====================================
    
    /**
     * This method will return the name of the coin.
     */
    public String getMyName()
    {
        return myName;
    }//====================================
    
    /**
     * This method flips the coin.
     * It returns heads or tails or "side"
     */
    public String flip()
    {
       int flipResult = rand.nextInt(2); 
       if(flipResult == 0) 
            return "tails";    
       else			
            return "heads";       
    }//=============================
    
    /**
     * This method will print the information about the coin.
     */
    public String toString()
    {
        return ("This is a " + myName + " with a value of $" + myValue);
    }//====================================================================
}