algorithm - Days Between Dates Java (homework) -


this couple days off when run program. advice on doing wrong?

i know there simpler way it, i'm trying show actual steps in finding days between.

homework assignment, cannot use date-time libraries.

public class daysbetween {      public static void main (string []args) {          long months1 = long.parselong(args[0]);         long days1 = long.parselong(args[1]);         long year1 = long.parselong(args[2]);         long months2 = long.parselong(args[3]);         long days2 = long.parselong(args[4]);         long year2 = long.parselong(args[5]);          long daysbetween = 0;          long leapyearcounter = 0;         boolean leapyear1 = false;         boolean leapyear2 = false;             boolean valid1 = true;         boolean valid2 = true;         int earlier = 0;          // tests see date earlier         if (year1 == year2){              if (months1 == months2) {                 if (days1 == days2) {                     daysbetween = daysbetween;                 } else if (days1 < days2) {                     earlier = 1;                 }             } else if (months1 < months2) {             earlier = 1;             }         } else if (year1 < year2 ) {             earlier = 1;         }          // switches dates depending on earlier         switch(earlier) {          case 1: months1 = long.parselong(args[0]);             days1   = long.parselong(args[1]);             year1   = long.parselong(args[2]);             months2 = long.parselong(args[3]);             days2   = long.parselong(args[4]);             year2   = long.parselong(args[5]);         break;           default:              months1 = long.parselong(args[3]);             days1   = long.parselong(args[4]);             year1   = long.parselong(args[5]);             months2 = long.parselong(args[0]);             days2   = long.parselong(args[1]);             year2   = long.parselong(args[2]);         break;         }          //this section tests if earlier date valid         if((year1 % 4 == 0) && (year1 % 100 != 0) || (year1 % 400 == 0)) {             leapyear1 = true;         }          if ((leapyear1 == true) && (months1 == 2)) {             if (days1 <= 29 && days1 >=1){                 valid1 = true;             }         } else if ((leapyear1 == false) && (months1 == 2)){             if (days1 <= 28 && days1 >= 1){                 valid1 = true;             }         }          if (months1 != 2) {             if (months1 < 8 ) {                 if (months1 %2 != 0) {                     if (days1 <= 31 && days1 >=1){                         valid1 = true;                     } else {                         valid1 = false;                     }                 } else if (months1 %2 == 0)  {                     if (days1 <= 30 && days1 >=1){                         valid1 = true;                     } else {                         valid1 = false;                     }                 }             } else if (months1 > 8) {                 if (months1 %2 != 0) {                     if (days1 <= 30 && days1 >=1){                         valid1 = true;                     } else {                         valid1 = false;                     }                 } else if (months1 %2 == 0)  {                     if (days1 <= 31 && days1 >=1){                         valid1 = true;                     } else {                         valid1 = false;                     }                 }             }         }          // section tests if later date valid         if((year2 % 4 == 0) && (year2 % 100 != 0) || (year2 % 400 == 0)) {             leapyear2 = true;         }          if ((leapyear2 == true) && (months2 == 2)) {             if (days2 <= 29 && days2 >=1){                 valid2 = true;             }         } else if ((leapyear2 == false) && (months2 == 2)){             if (days2 <= 28 && days2 >= 1){                 valid2 = true;             }         }          if (months2 != 2) {             if (months2 < 8 ) {                 if (months2 %2 != 0) {                     if (days2 <= 31 && days2 >=1){                         valid2 = true;                     } else {                         valid2 = false;                     }                 } else if (months2 %2 == 0)  {                     if (days2 <= 30 && days2 >=1){                         valid2 = true;                     } else {                         valid2 = false;                     }                 }             } else if (months2 > 8) {                 if (months2 %2 != 0) {                     if (days2 <= 30 && days2 >=1){                         valid2 = true;                     } else {                         valid2 = false;                     }                 } else if (months2 %2 == 0)  {                     if (days2 <= 31 && days2 >=1){                         valid2 = true;                     } else {                         valid2 = false;                     }                 }             }         }          //this adds day total if earlier date in january & leap year         if ((months1 == 1) && (leapyear1 == true)) {             daysbetween = daysbetween +1;         }          //this adds months left in year1         if (months1 == 1) {              daysbetween = daysbetween + 334;         } else if (months1 == 2) {             daysbetween = daysbetween + 306;         } else if (months1 == 3) {             daysbetween = daysbetween + 275;         } else if (months1 == 4) {             daysbetween = daysbetween + 245;          } else if (months1 == 5) {             daysbetween = daysbetween + 214;         } else if (months1 == 6) {             daysbetween = daysbetween + 184;         } else if (months1 == 7) {             daysbetween = daysbetween + 153;         } else if (months1 == 8) {             daysbetween = daysbetween + 122;         } else if (months1 == 9) {             daysbetween = daysbetween + 92;         } else if (months1 == 10) {             daysbetween = daysbetween + 61;         } else if (months1 == 11) {             daysbetween = daysbetween + 31;         } else { }          // adds day if year2 leap year , if month march or later         if ((months2 >= 3) && (leapyear2 = true)) {              daysbetween = daysbetween + 1;         }          // adds months month in year2         if (months2 == 1) {              daysbetween = daysbetween;         } else if (months2 == 2) {             daysbetween = daysbetween + 31;         } else if (months2 == 3) {             daysbetween = daysbetween + 59;         } else if (months2 == 4) {             daysbetween = daysbetween + 90;          } else if (months2 == 5) {             daysbetween = daysbetween + 120;         } else if (months2 == 6) {             daysbetween = daysbetween + 151;         } else if (months2 == 7) {             daysbetween = daysbetween + 181;         } else if (months2 == 8) {             daysbetween = daysbetween + 212;         } else if (months2 == 9) {             daysbetween = daysbetween + 243;         } else if (months2 == 10) {             daysbetween = daysbetween + 273;         } else if (months2 == 11) {             daysbetween = daysbetween + 304;         } else  if (months2 == 12) {             daysbetween = daysbetween + 334;         } else { }          //this add days left in month1         if (months1 != 2) {              if (months1 < 8 ) {                 if (months1 %2 != 0) {                     daysbetween = daysbetween + (31 - days1);                 } else if (months1 %2 == 0) {                     daysbetween = daysbetween + (30 - days1);                 }             } else if (months1 > 8) {                 if (months1 %2 != 0) {                     daysbetween = daysbetween + (30 - days1);                 } else if (months1 %2 == 0)  {                     daysbetween = daysbetween + (31 - days1);                 }             }         }          // add days left in month1 if feb         if ((leapyear1 == true) && (months1 == 2)) {              daysbetween = daysbetween + (29 - days1);         } else {             daysbetween = daysbetween + (28 - days1);         }          daysbetween = daysbetween + days2; // adds days left in month2         daysbetween = daysbetween + ((((year2-1)-(year1+1))+1)*365); // adds days in years total          (long = (year1+1); < (year2-1) ; i++) { // sees # of leapyears b/n year1 & year2             if ((i % 4 == 0) && (i % 100 != 0) || (i % 400 == 0)) {                 leapyearcounter++;             }         }          daysbetween = daysbetween + leapyearcounter; // adds leapyear days          if ((valid1 == false) || (valid2 == false)) {             system.out.println("sorry! gave me 1 or more invalid dates!");         } else if (daysbetween == 1){             system.out.println("there " + daysbetween + " day between 2 dates!");         } else if (daysbetween != 1) {             system.out.println("there " + daysbetween + " days between 2 dates!");         } else if (daysbetween == 0) {             system.out.println("there no days between 2 dates!");         }     } } 

unless homework or self hurting thing have going can recommend using joda time library datetime calculations:

time use joda answer: ~22 minutes


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -

Determine if a XmlNode is empty or null in C#? -