HELP JAVA ASSIGNMENT So here is my programming assignment Wr
HELP JAVA ASSIGNMENT!
 
 So here is my programming assignment: \"Write a program in Java to generate the entire calendar for one year. The program must get two values from the user: : (1) the year and (2) the day of the week for January 1st of that year. \"
 I have everything in my code working except the numbers on the calendar don\'t line up like they should, so my JUnit test is wrong. Here\'s a picture: It is supposed to look like the left side. I somehow have extra spaces.
When i click on the JUnit test. It gives me the following (sorry some of the numbers got cut off):
This is my code ( The day of the week for January 1st is needed so that you know where to start the calendar. The user should enter 0 for Sunday, 1 for Monday, … or 6 for Saturday. To actually print the calendar, a SINGLE method that prints out the calendar for one month must be used and then called 12 times from main(), once for each month in the year. To check for a leap year we will need to write another method that takes the year as a parameter and returns true if it’s a leap year, or false otherwise.)
:
public class CalendarAssignment {
    /**
    * Error to output if year is not positive
    */
    static final String E_YEAR = \"The year must be positive!\";
   /**
    * Error to output if the day is not between 0 and 6
    */
    static final String E_DAY = \"The day of January 1st must be between 0 and 6!\";
   /**
    * Determines if an input is a leap year
    *
    * @param year
    * year in question
    * @ereturn true if a leap year
    */
    public static boolean isLeapYear(int year) {
    boolean leapyear = false;
    if(year%4 == 0) {
    if(year%100 == 0){
    if(year%400 == 0){
    return !leapyear;
    };
    }else{
    return !leapyear;
    }
    }
    return leapyear; // TODO: replace with your code
    }
   /**
    * Outputs a month to the console
    *
    * @param month
    * title
    * @param startDay
    * 0=Sunday ... 6=Saturday
    * @param numDays
    * number of days in the month
    * @return day of the week of the last day of the month
    */
    public static int printMonth(String month, int startDay, int numDays) {
    System.out.println(month);
    int nextLine=1;
    for(int j=numDays,k=1;j>0;){
    if(startDay>0){
    for(int i=0;i    System.out.printf(\"\\t\");
    nextLine++;
    }
    startDay=0;
    }else{
    System.out.printf(k + \"\\t\");
    nextLine++;
    k++;
    j--;
    }
    if((nextLine >7)){System.out.println(); nextLine=1;}
    }
    return (nextLine-1);
    // TODO: replace with your code
    }
   /**
    * Program execution point: input year, day of the week (0-6) of january 1
    * output calendar for that year
    *
    * @param args
    * command-line arguments (ignored)
    */
    public static void main(String[] args) {
   String[] months = {\"January\", \"February\", \"March\", \"April\", \"May\",
    \"June\", \"July\", \"August\", \"September\", \"October\", \"November\",
    \"December\" };
    int[] total_Days_In_Months = {31,28,31,30,31,30,31,31,30,31,30,31};
    Scanner input = new Scanner(System.in);
    System.out.print(\"Enter the year: \");
    int year = input.nextInt();
    System.out.print(\"Enter the day of the week of January 1st (0=Sunday, 1=Monday, ... 6=Saturday): \");
    if(year <= 0) {
        System.out.print(E_YEAR);
        System.out.println();
        System.exit(0);
    }
    int day_of_week = input.nextInt();
    if(day_of_week <0 || day_of_week >6)
        {
        System.out.print(E_DAY);
        System.out.println();
        System.exit(0);
        }
    if(isLeapYear(year)){
    total_Days_In_Months[1] = 29;
    }
    for(int j=0;j    int endDay = day_of_week;
    day_of_week = printMonth(months[j], endDay, total_Days_In_Months[j]);
    System.out.println();
    }
    }
 }
Solution
/**
* Determines if an input is a leap year
*
* @param year year in question
* @return true if a leap year
*/
public static boolean isLeapYear(int year) {
return false;
}
/**
* Outputs a month to the console
*
* @param month title
* @param startDay 0=Sunday ... 6=Saturday
* @param numDays number of days in the month
* @return day of the week of the last day of the month
*/
public static int printMonth(String month, int startDay, int numDays){
System.out.println(month);
int dayOfWeek = 10;
//Your code goes here
System.out.println(\"Print: \" + month);
System.out.println(\"\");
return dayOfWeek;
}
/**
* Program execution point:
* input year, day of the week (0-6) of january 1
* output calendar for that year
*
* @param args command-line arguments (ignored)
*/
public static void main(String[] args) {
@SuppressWarnings(\"resource\")
final Scanner input = new Scanner(System.in);
System.out.print(\"Enter the year: \");
final int year = input.nextInt();
System.out.print(\"Enter the day of the week of January 1st (0=Sunday, 1=Monday, ... 6=Saturday): \");
final int firstDay = input.nextInt();
if (year<=0) {
System.out.println(\"The year must be positive!\");
System.exit(0);
}
if (firstDay<0 || firstDay>6) {
System.out.println(\"The day of January 1st must be between 0 and 6!\");
System.exit(0);
}
final int numFebDays;
if (isLeapYear(year)) {
numFebDays = 29;
} else {
numFebDays = 28;
}
int lastDayOfWeek;
lastDayOfWeek = printMonth(\"January\", firstDay, 31);
lastDayOfWeek = printMonth(\"February\", lastDayOfWeek, numFebDays);
lastDayOfWeek = printMonth(\"March\", lastDayOfWeek, 31);
lastDayOfWeek = printMonth(\"April\", lastDayOfWeek, 30);
lastDayOfWeek = printMonth(\"May\", lastDayOfWeek, 31);
lastDayOfWeek = printMonth(\"June\", lastDayOfWeek, 30);
lastDayOfWeek = printMonth(\"July\", lastDayOfWeek, 31);
lastDayOfWeek = printMonth(\"August\", lastDayOfWeek, 31);
lastDayOfWeek = printMonth(\"September\", lastDayOfWeek, 30);
lastDayOfWeek = printMonth(\"October\", lastDayOfWeek, 31);
lastDayOfWeek = printMonth(\"November\", lastDayOfWeek, 30);
lastDayOfWeek = printMonth(\"December\", lastDayOfWeek, 31);
}





