/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
int year; // year
int startDayOfMonth;
int spaces;
int month;
//Creates a new Scanner
Scanner scan
= new Scanner
( System .
in ) ;
//Prompts user to enter year
System .
out .
println ( "Enter a year: " ) ; year = scan.nextInt ( ) ;
//Prompts user to enter month
System .
out .
println ( "Enter the number of the month: " ) ; month = scan.nextInt ( ) ;
//Calculates the 1st day of that month
cal.set ( year, month- 1 , 1 ) ;
int day
= cal.
get ( Calendar .
DAY_OF_WEEK ) - 1 ;
// months[i] = name of month i
" " ,
"January" , "February" , "March" ,
"April" , "May" , "June" ,
"July" , "August" , "September" ,
"October" , "November" , "December"
} ;
// days[i] = number of days in month i
int [ ] days = {
0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31
} ;
// check for leap year
if ( ( ( ( year % 4 == 0 ) && ( year % 100 != 0 ) ) || ( year % 400 == 0 ) ) && month == 2 )
days[ month] = 29 ;
// print calendar header
// Display the month and year
System .
out .
println ( " " + months
[ month
] + " " + year
) ;
// Display the lines
System .
out .
println ( "___________________________________________" ) ; System .
out .
println ( " Sun Mon Tue Wed Thu Fri Sat" ) ;
// spaces required
spaces = day;
// print the calendar
for ( int i = 0 ; i < spaces; i++ )
for ( int i = 1 ; i <= days[ month] ; i++ ) {
System .
out .
printf ( " %4d " , i
) ; if ( ( ( i
+ spaces
) % 7 == 0 ) || ( i
== days
[ month
] ) ) System .
out .
println ( ) ; }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWludCB5ZWFyOyAgICAvLyB5ZWFyCiAgICAgICAgaW50IHN0YXJ0RGF5T2ZNb250aDsKICAgICAgICBpbnQgc3BhY2VzOwogICAgICAgIGludCBtb250aDsKCiAgICAgICAgLy9DcmVhdGVzIGEgbmV3IFNjYW5uZXIKICAgICAgICBTY2FubmVyIHNjYW4gPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoKICAgICAgICAvL1Byb21wdHMgdXNlciB0byBlbnRlciB5ZWFyCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbnRlciBhIHllYXI6ICIpOwogICAgICAgIHllYXIgPSBzY2FuLm5leHRJbnQoKTsKCiAgICAgICAgLy9Qcm9tcHRzIHVzZXIgdG8gZW50ZXIgbW9udGgKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGVyIHRoZSBudW1iZXIgb2YgdGhlIG1vbnRoOiAiKTsKICAgICAgICBtb250aCA9IHNjYW4ubmV4dEludCgpOwoKCiAgICAgICAgLy9DYWxjdWxhdGVzIHRoZSAxc3QgZGF5IG9mIHRoYXQgbW9udGgKICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOwogICAgICAgIGNhbC5zZXQoeWVhciwgbW9udGgtMSwgMSk7CiAgICAgICAgaW50IGRheSA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspLTE7CgogICAgICAgIC8vIG1vbnRoc1tpXSA9IG5hbWUgb2YgbW9udGggaQogICAgICAgIFN0cmluZ1tdIG1vbnRocyA9IHsKICAgICAgICAgICAgICAgICIgIiwKICAgICAgICAgICAgICAgICJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgIk1hcmNoIiwKICAgICAgICAgICAgICAgICJBcHJpbCIsICJNYXkiLCAiSnVuZSIsCiAgICAgICAgICAgICAgICAiSnVseSIsICJBdWd1c3QiLCAiU2VwdGVtYmVyIiwKICAgICAgICAgICAgICAgICJPY3RvYmVyIiwgIk5vdmVtYmVyIiwgIkRlY2VtYmVyIgogICAgICAgIH07CgogICAgICAgIC8vIGRheXNbaV0gPSBudW1iZXIgb2YgZGF5cyBpbiBtb250aCBpCiAgICAgICAgaW50W10gZGF5cyA9IHsKICAgICAgICAgICAgICAgIDAsIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzEKICAgICAgICB9OwoKCiAgICAgICAgLy8gY2hlY2sgZm9yIGxlYXAgeWVhcgogICAgICAgIGlmICAoKCgoeWVhciAlIDQgPT0gMCkgJiYgKHllYXIgJSAxMDAgIT0gMCkpIHx8ICAoeWVhciAlIDQwMCA9PSAwKSkgJiYgbW9udGggPT0gMikKICAgICAgICAgICAgZGF5c1ttb250aF0gPSAyOTsKCgogICAgICAgIC8vIHByaW50IGNhbGVuZGFyIGhlYWRlcgogICAgICAgIC8vIERpc3BsYXkgdGhlIG1vbnRoIGFuZCB5ZWFyCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICIrIG1vbnRoc1ttb250aF0gKyAiICIgKyB5ZWFyKTsKCiAgICAgICAgLy8gRGlzcGxheSB0aGUgbGluZXMKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgU3VuICAgTW9uICAgVHVlICAgV2VkICAgVGh1ICAgRnJpICAgU2F0Iik7CgogICAgICAgIC8vIHNwYWNlcyByZXF1aXJlZAogICAgICAgIHNwYWNlcyA9IGRheTsKCiAgICAgICAgLy8gcHJpbnQgdGhlIGNhbGVuZGFyCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcGFjZXM7IGkrKykKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiICAgICAgIik7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gZGF5c1ttb250aF07IGkrKykgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiICU0ZCAiLCBpKTsKICAgICAgICAgICAgaWYgKCgoaSArIHNwYWNlcykgJSA3ID09IDApIHx8IChpID09IGRheXNbbW9udGhdKSkgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKCX0KfQ==