Stars.java
//********************************************************************
//
// Classname.java
//
// Author: Josh Santomieri
// Author's email: 
// Author's WWW URL: http://www.santsys.com/ 
//
// Course, section, and quarter: CPE 101-02 Fall 2001
// Department: Computer Science
// School: Calif. Polytechnic State Univ.
// Address: San Luis Obispo, CA, 93407 USA
//
// History:
//      
//
//********************************************************************
//
// Program Description and Design Overview:
//		Create a program that draws Stars. The program must draw 4 different 
//		kind of star patterns by printing sequences of asterisks and blanks 
//		(spaces) on the screen with nested loops.  The Stars.java program on 
//		page 150 of your textbook is one of the four kinds of patterns your 
//		program must print (click on link to download).  The other three patterns
//		are shown here (including the original).  Notice that the star patterns 
//		may have different number of rows.  Patterns are named A, B, C, and D 
//		(left to right below). 
//  
//		*           **********               *            *
//		**           *********              **           ***
//		***           ********             ***          *****
//		****           *******            ****         *******
//		*****           ******           *****        *********
//		******           *****          ******       ***********
//		*******           ****         *******      *************
//		********           ***        ********
//		*********           **       *********
//		**********           *
//		***********
//		
//		Your program must prompt the user for the number of rows and the pattern type 
//		(A, B, C, and D).   Then print a star with the selected pattern and size.  It 
//		should then print 3 blank lines and prompt the user again.  If the user enters
//		zero or a negative number of rows, the program should end.  Otherwise, loop and 
//		draw another star pattern 
//      
//
// Input Requirements:
//      number of rows
//		row pattern (A, B, C, or D)
//
// Output Requirements:
//		prompt user for number of rows (if number is less than or equal to zero, stop program)
//		prompt user for type of pattern
//      pattern of stars (A, B, C, or D)
//		same amount of rows as entered
//		3 blank lines
//
// Program Preconditions:
//      number of rows must be an integer
//
//********************************************************************

import java.io.*;

public class Stars
{

   //-----------------------------------------------------------------
   //  a program that draws Stars in the shape and amount of rows that user entered
   //-----------------------------------------------------------------
   public static void main (String[] args) throws IOException
   {
	   	BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		int numRows = 0;
		String option = "";
		String sMax = "";
		
		// get the pattern type
		do {
			System.out.println("Enter a shape pattern (A, B, C, or D):");
			option = reader.readLine().toUpperCase();
		} while(!option.equals("A") 
				&& !option.equals("B") 
				&& !option.equals("C") 
				&& !option.equals("D"));
		
		// get the number of rows
		System.out.println("Enter the number of rows:");
		sMax = reader.readLine();
		numRows = Integer.parseInt(sMax);
		
		// if less than one row, exit.
		if(numRows < 1) {
			System.out.println("Nothing to print. Exiting.");
			return;
		}
		
		System.out.println();
		
		// draw the selected pattern
		if(option.equals("A")) {
			for(int row = 0; row < numRows; row++) {
				for(int stars = 0; stars < row + 1; stars++) {
					System.out.print('*');
				}
				System.out.println();
			}
		}
		else if(option.equals("B")) {
			for(int row = 0; row < numRows; row++) {
				// pad the left
				for(int j = 0; j < row; j++) {
					System.out.print(" ");
				}
				
				// draw the stars
		        for(int k = 0; k < numRows - row; k++)
		        {
		            System.out.print("*");
		        }
		        System.out.println();
			}
		}
		else if(option.equals("C")) {
			for(int row = 0; row < numRows; row++) {
				// pad the left
				for(int j = 0; j < numRows - row - 1; j++) {
					System.out.print(" ");
				}
				
				// draw the stars
		        for(int k = numRows - row; k <= numRows; k++)
		        {
		            System.out.print("*");
		        }
		        System.out.println();
			}
		}
		else if(option.equals("D")) {
			 for(int row = 0; row < numRows; row++) {
				 
				// pad the left
		        for(int j = 0; j < numRows - row - 1; j++) {
		            System.out.print(" ");
		        }
		        
		        // draw the stars
		        for(int k = numRows - row; k <= numRows + (row * 1); k++)
		        {
		            System.out.print("*");
		        }
		        
		        // pad the right (not sure we need this, but why not...)
		        for(int j = 0; j < numRows - row; j++)
		        {
		            System.out.print(" ");
		        }
		        
		        System.out.println();
		    }
		}
		
		// end with 3 blank lines
		System.out.print("\r\n\r\n\r\n");
   } //end main

} // end class Stars