A couple of notes.
1. Always name your methods with first lower-case letter: "display", "leapYear", etc.
2. Give more descriptive names to your methods: "isLeapYear()" as opposed to "leapYear()"
3. isLeapYear () if statement seems incorrect. The way it's written now, only returns true if the year is divisible by 400 (&& vs. ||)
4. You're picking out the random start day quite nicely, but not using it

here's what you should do:
First, note that if the month has 30 days, and your start day is 4, you should iterate through a total of 34 days: first 4 will get skipped, and 30 will get printed out. So your for-loop should look like this:
|
Code:
|
for(i=1;i<=dayOfmonth+startDay;i++)
{
if (i <= startDay)
System.out.print (" "); // or whatever better way to print a blank.
else if(i%8==0)
System.out.println();
else
System.out.printf("%-13d",(i-startDay));
} |
Now, why are you printing the new line every 8 days (and not every 7 days)?
Cheers!