I\'ve been working on this for several hours now and I\'m completely stuck. The
ID: 3537068 • Letter: I
Question
I've been working on this for several hours now and I'm completely stuck. The assignment is at the following link: http://www.cs.washington.edu/education/courses/cse142/08wi/homework/4/spec.pdf
This is the work I've done so far. I'm not sure where I'm going wrong, any help would be appreciated.
import java.util.Scanner;
public class BirthdayComparison {
public static final int THISMONTH = 2;
public static final int THISDAY = 1;
public static void main(String[] args) {
greeting();
monthAndDay();
}
public static void greeting() {
System.out.println("This program compares two birthdays");
System.out.println("And displays which one is sooner.");
System.out.println("Today's date is " + THISMONTH + "/" + THISDAY + "/2012" + ", day #32 of the year." );
System.out.println("");
}
public static void monthAndDay(){
Scanner console = new Scanner (System.in);
System.out.println("Person 1: ");
System.out.print("What month and day were you born? ");
int Month = console.nextInt();
int Day = console.nextInt();
absoluteDay(Month, Day);
nextBirthday(Month, Day);
System.out.println();
System.out.println("Person 2: ");
System.out.print("What month and day were you born? ");
int Month2 = console.nextInt();
int Day2 = console.nextInt();
absoluteDay(Month2, Day2);
nextBirthday(Month2, Day2);
}
public static int calculateDays(int month){
int days;
switch(month){
case 9:
case 4:
case 6:
case 11: days = 30;
break;
case 2: days = 29;
break;
default: days = 31;
}
return days;
}
public static int absoluteDay(int Month, int Day) {
int Days = 0,i;
for (i=1; i <Month; i++) {
Days += calculateDays(i);
} Days+=Day;
System.out.println(Month+"/"+Day+"/2012 falls on day# "+Days+" of 366.");
return Days;
}
public static int daySetup(int Month,int Day)
{if(Month > Day)
return Day +(366 - Month);
else
return Day - Month;
}
public static void printmessage(int Day) {
if(Day==0)
System.out.println("Happy Birthday");
else if (Day==1)
System.out.println("Wow, your birthday is tomorrow");
else
System.out.println("Your next birthday is in "+Day+" days: ");
}
public static void nextBirthday(int Month, int Day) {
if (THISMONTH == Month && THISDAY == Day)
System.out.println("Happy Birthday!");
else if (THISMONTH == Month && THISDAY == Day - 1)
System.out.println("Your birthday is tomorrow.");
else if(THISDAY < Day && THISMONTH == Month){
System.out.println("Your next birthday is in " + (Day - THISDAY) +" days");
}
else{
System.out.println("Your next birthday is in "+(366 - (Day - THISDAY))+" days");
}
}
}
Explanation / Answer
import java.text.DecimalFormat;
import java.util.Scanner;
public class Mukesh
{
public static final int THISMONTH = 1;
public static final int THISDAY = 29;
public static void main(String[] args)
{
greeting();
monthAndDay();
}
public static void greeting()
{
System.out.println("This program compares two birthdays");
System.out.println("And displays which one is sooner.");
System.out.println("Today's date is " + THISMONTH + "/" + THISDAY + "/2008" + ", day "+absoluteDay(THISMONTH,THISDAY)+" of the year." );
System.out.println("");
}
public static void monthAndDay()
{
Scanner console = new Scanner (System.in);
System.out.println("Person 1 :");
System.out.print("What month and day were you born? ");
int Month = console.nextInt();
int Day = console.nextInt();
absoluteDay(Month, Day);
int nB1=NextBirthday(Month, Day);
if(nB1==0)
{
System.out.println("Happy Birthday!!");
}
System.out.println();
System.out.println("Person 2 :");
System.out.print("What month and day were you born? ");
int Month2 = console.nextInt();
int Day2 = console.nextInt();
absoluteDay(Month2, Day2);
int nB2=NextBirthday(Month2, Day2);
if(nB2==0)
{
System.out.println("Happy Birthday!!");
}
BirthDaysooner(nB1,nB2);
}
public static int calculateDays(int month)
{
int days;
if(month==1){
days=31;}
else if(month==2){
days=29;}
else if(month==3){
days=31;}
else if(month==4){
days=30;}
else if(month==5){
days=31;}
else if(month==6){
days=30;}
else if(month==7){
days=31;}
else if(month==8){
days=31;}
else if(month==9){
days=30;}
else if(month==10){
days=31;}
else if(month==11){
days=30;}
else if(month==12){
days=31;}
else
{
days=31;
}
return days;
}
public static int NextBirthday(int Month, int Day)
{
int daysaway=daysdifference(Month,Day);
System.out.println("Your next birthday is in "+daysaway+" day(s).");
double percent= (daysaway)*100.0/366.0;
percent=(double)(Math.round(percent*10))/10;
System.out.println("That is "+percent+" percent of a year away.");
System.out.println();
return daysaway;
}
public static int absoluteDay(int Month,int Day)
{
int Days = 0,i;
for (i=1; i <Month; i++)
{
Days += calculateDays(i);
}
Days+=Day;
return Days;
}
public static int daysdifference(int Month,int Day)
{
int diff=0;
if(THISMONTH<Month)
{
int absDMonth=absoluteDay(Month,Day);
int absDThisMonth=absoluteDay(THISMONTH,THISDAY);
diff=absDMonth-absDThisMonth;
}
else if(THISMONTH>Month)
{
int absDMonth=absoluteDay(Month,Day);
int absDThisMonth=absoluteDay(THISMONTH,THISDAY);
diff=(366-absDThisMonth)+absDMonth;
}
else
{
if(THISDAY<Day)
{
diff=Day-THISDAY;
}
else if(THISDAY>Day)
{
int absDMonth=absoluteDay(Month,Day);
int absDThisMonth=absoluteDay(THISMONTH,THISDAY);
diff=(366-absDThisMonth)+absDMonth;
}
}
return diff;
}
public static void BirthDaysooner(int nb1,int nb2)
{
if(nb1>nb2)
{
System.out.println("Person 2's birthday is sooner.");
}
else if(nb2>nb1)
{
System.out.println("Person 1's birthday is sooner.");
}
else
{
System.out.println("Wow, you share the same birthday!");
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.