Java Files for P4
Date.java
public class Date
{
// An instance of this class is a particular date.
private String month;
private int day;
private int year;
// "Moon" constants.
// T is the average time (in days) between new Moons.
public static final double T = 29.530588; // 29 days + 12 hours + 44 minutes + 2.8 seconds
// tBase is the time (in days) since the last new Moon at the (GMT) start of January 1, 1600.
public static final double tBase = 14.532069;
// Constructor. Creates a Date object with month s, day d, and year y.
public Date(String s, int d, int y)
{
month = s;
day = d;
year = y;
}
// Yields the relative index of this date.
// (Days are indexed from 1 starting with January 1.)
public int relDayIndex()
{
int s;
if (month.equals("January"))
s = day;
else if (month.equals("February"))
s = day+31;
else if (month.equals("March"))
s = day+59;
else if (month.equals("April"))
s = day+90;
else if (month.equals("May"))
s = day+120;
else if (month.equals("June"))
s = day+151;
else if (month.equals("July"))
s = day+181;
else if (month.equals("August"))
s = day+212;
else if (month.equals("September"))
s = day+243;
else if (month.equals("October"))
s = day+273;
else if (month.equals("November"))
s = day+304;
else
s = day+334;
return s;
}
// Yields a string that specifies this date.
public String prettyDate()
{return month + " " + day + ", " + year;}
}
P4C.java
import java.awt.*;
public class MoonPhase extends Frame
{
// Graphics g draws a moon with t-value t0.
// The center is at (hc,vc) and the radius is r.
public static void drawMoon(Graphics g, int hc, int vc, int r, double t0)
{
}
public void paint(Graphics g)
{
// Test cases for debugging drawMoon:
// drawMoon(g,300,300,100,10);
// drawMoon(g,600,300,100,20);
// Test cases for debugging drawWeekOfMoons
// drawWeekOfMoons(g,100,200,30,0.0);
// drawWeekOfMoons(g,100,300,30,16.0);
// Test case for debugging drawMonthOfMoons
// drawMonthOfMoons(g,100,100,30,0.0);
}
}
public class P4C
{
public static void main(String args[])
{
MoonPhase d = new MoonPhase();
d.resize(800,600);
d.move(0,75);
d.setTitle("Moons");
d.show();
d.toFront();
}
}
P4A.java
// Checks the methods leapYear, prettyDate, and relDayIndex.
import java.io.*;
public class P4A
{
public static void main(String args[])
{
TokenReader in = new TokenReader(System.in);
// Print the leap years from 1892 to 2012.
System.out.println("Leap years during 1892-2012:\n");
int count=0;
for (int yr=1892;yr<=2012;yr++)
{
if (Date.leapYear(yr))
{
System.out.print(" " + yr);
count++;
if (count%10==0)
System.out.println("");
}
}
// Display the relative day indices for the first of each month
// during year y.
int y = 1996;
Date D;
System.out.println("\nSome relative day indices:\n");
D = new Date("January",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("February",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("March",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("April",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("May",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("June",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("July",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("August",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("September",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("October",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("November",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
D = new Date("December",1,y);
Format.println(System.out," %3d = " + D.prettyDate(),D.relDayIndex());
in.waitUntilEnter();
}
}
P4B.java
// Checks the methods absDayIndex and elapsed.
import java.io.*;
public class P4B
{
public static void main(String args[])
{
TokenReader in = new TokenReader(System.in);
System.out.println("\nSome Absolute Day Indices:\n");
Date D1 = new Date("July",4,1776);
Date D2 = new Date("August",27,1998);
Date D3 = new Date("March",11,1999);
D3 = new Date("January",9,1997);
Format.println(System.out,"%8d = " + D1.prettyDate(),D1.absDayIndex());
Format.println(System.out,"%8d = " + D2.prettyDate(),D2.absDayIndex());
Format.println(System.out,"%8d = " + D3.prettyDate(),D3.absDayIndex());
System.out.println("\nThe associated values of sinceBaseNewMoon:\n");
double t1 = D1.sinceBaseNewMoon();
Format.println(System.out,"%14.4f = " + D1.prettyDate(),t1);
double t2 = D2.sinceBaseNewMoon();
Format.println(System.out,"%14.4f = " + D2.prettyDate(),t2);
double t3 = D3.sinceBaseNewMoon();
Format.println(System.out,"%14.4f = " + D3.prettyDate(),t3);
System.out.println("\nWaxing or Waning?:\n");
if (Date.isWaxing(t1))
{ System.out.println("The Moon is waxing on " + D1.prettyDate()); }
else
{ System.out.println("The Moon is waning on " + D1.prettyDate()); }
if (Date.isWaxing(t2))
{ System.out.println("The Moon is waxing on " + D2.prettyDate()); }
else
{ System.out.println("The Moon is waning on " + D2.prettyDate()); }
if (Date.isWaxing(t3))
{ System.out.println("The Moon is waxing on " + D3.prettyDate()); }
else
{ System.out.println("The Moon is waning on " + D3.prettyDate()); }
in.waitUntilEnter();
}
}