CS 100: Section Assignment S6

Solutions


// Illustrates strings, methods that return a string, fonts, color,
// a graphics methods.

import java.io.*;
import java.awt.*;

public class S6_1Drawing extends Frame
{
    // Yields a time string of the form h:mm or hh:mm
    public static String prettyTime(int hour, int minute)
    {
       String s;
       if (minute<10)
       {
          s = hour + ":0" + minute;
       }
       else
       {
          s = hour + ":" + minute;
       }
       return s;
    }
    
    public static void drawDigitalClock(Graphics g, int hc, int vc, int r, int hour, int minute)
    {
       // Draw the face and the rectangles
       g.setColor(Color.magenta);
       g.fillOval(hc-r,vc-r,2*r,2*r);
       g.setColor(Color.pink);
       g.fillRect(hc-r/2,(int)(vc-.45*r-r/6),r,r/3);
       g.fillRect(hc-r/2,(int)(vc+.45*r-r/6),r,r/3);
       
       // Draw the labels
           g.setColor(Color.black);
           g.setFont(new Font("Helvetica",Font.PLAIN,18));
	   g.drawString("Time",(int)(hc-.1*r),(int)(vc-.15*r));
	   g.drawString("Coming Up",(int)(hc-.25*r),(int)(vc+.75*r));
	   
	   // Produce the two time strings
	   String current = prettyTime(hour,minute);
	   int m1 = minute+1;
	   int h1 = hour;
	   if (m1==60)
	   {
	      m1 = 0;
	      h1 = h1+1;
	      if (h1==13)
	      {
	         h1 = 1;
	      }
	   }
	   String comingUp = prettyTime(h1,m1);
	   
	   // Display the two times.
	   g.setFont(new Font("TimesRoman",Font.BOLD,36));
	   g.drawString(current,(int)(hc-.2*r),(int)(vc-.38*r));
	   g.drawString(comingUp,(int)(hc-.2*r),(int)(vc+.53*r));
    }
    
    // Whenever it has to the system will execute this method and
    // draw the specified clock in the window.
	public void paint(Graphics g)
	{
	   drawDigitalClock(g,400,300,200,12,59);
	
	}
	
}

public class S6_1
{
	public static void main(String args[])
	{
	    // Create a window for the system to draw in.
		S6_1Drawing d = new S6_1Drawing();
		d.resize(800,600);                     
		d.move(0,75);
		d.setTitle("Digital Watch");           
		d.show();
		d.toFront();
	}
}



//*********************************************************

// Illustrates how to write a graphics method and some "alternation"
// type thinking.


import java.io.*;
import java.awt.*;

public class S6_2Drawing extends Frame
{
    // Graphics g draws a row of an n-by-n checkerboard with s-by-s squares.
    // The upper left corner of the first square is at (hL,vT). The squares alternate
    // in color between magent and cyan. The leftmost square magenta if first is true 
    // and cyan otherwise.
    public static void drawCheckerRow(Graphics g, int hL, int vT, int s, int n, boolean first)
    {
       int h = hL; // The horizontal coordinate of the kth square's left edge.
       for(int k=1;k<=n;k++)
       {
          // The kth square is magent if k is odd and the first square is magenta OR
          // if k is even and the first square is cyan.
          if((k%2==1 && first) || (k%2==0 && !first) )
             g.setColor(Color.magenta);
          else
             g.setColor(Color.cyan);
          g.fillRect(h,vT,s,s);
          h=h+s;
       }
    }
    
    
	public void paint(Graphics g)	{
	   drawCheckerRow(g,100,200,50,12,true);
	   drawCheckerRow(g,100,250,50,12,false);
	
	}
	
}

public class S6_2
{
	public static void main(String args[])
	{
		S6_2Drawing d = new S6_2Drawing();
		d.resize(800,600);                     
		d.move(0,75);
		d.setTitle("Checker Row");                 
		d.show();
		d.toFront();
	}
}


//************************************************

// Nested if-else and string equality.

import java.io.*;

public class S6_3
{	
	public static void main(String args[])
	{
       TokenReader in = new TokenReader(System.in);
	   
	   String s = "Autumn";
	   //String s = "Winter";
	   //String s = "Spring";
	   //String s = "Summer";
	   String date;
	   if (s.equals("Autumn"))
	      date = "September 22";
	   else if (s.equals("Winter"))
	      date = "December 21";
	   else if (s.equals("Spring"))
	      date = "March 22";
	   else
	      date = "June 22";
	   System.out.println(s + " begins on " + date);
		
	   in.waitUntilEnter();
	}

}

//******************************************************


// Illustrate nested if-else.

import java.io.*;

public class S6_4
{	
	public static void main(String args[])
	{
       TokenReader in = new TokenReader(System.in);
	   
	   String s;  // Names the quadrant(s)
	   int x;     // A trial degree
	   for(x=0;x<=360;x=x+45)
	   {
	      // There are 8 separate possibilities: 4 boundary situations
	      // a 4 nonboundary situations.
	      if      ( (0&ltx)   && (x&lt90) )
	         s = "First";
	      else if ( (90&ltx)  && (x&lt180) )
	         s = "Second";
	      else if ( (180&ltx) && (x&lt270) )
	         s = "Third";
	      else if ( (270&ltx) && (x&lt360) )
	         s = "Fourth";
	      else if ( x==0 || x==360 )
	         s = "First and Fourth";
	      else if (x==90)
	         s = "First and Second";
	      else if (x==180)
	         s = "Second and Third";
	      else 
	         s = "Third and Fourth";
	      
	      System.out.println(x + " is in the " + s + " quadrant(s)");
	   
	   }
		
	   in.waitUntilEnter();
	}