版权声明:以下代码均由小任一人码成,转载请注明出处。
源码
import java.util.Calendar;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("请输入年份 : ");
Scanner scanner = new Scanner(System.in);
int ye = scanner.nextInt();
System.out.print("请输入月份 : ");
Scanner scanner1 = new Scanner(System.in);
int mo = scanner1.nextInt();
//获取本地时间
Calendar calendar = Calendar.getInstance();
//设置年份
calendar.set(Calendar.YEAR,ye);
//设置月份
calendar.set(Calendar.MONTH,mo-1);
//设置当前为1号
calendar.set(Calendar.DATE,1);
//获取这个月最大的天数
int sumDays = calendar.getActualMaximum(Calendar.DATE);
System.out.println("日\t一\t二\t三\t四\t五\t六");
//获取输入的月份1号的星期数,因为星期日是1,星期一是2,所以当i小于星期数的时候就输出空格。
for(int i=1;i<calendar.get(Calendar.DAY_OF_WEEK);i++)
{
System.out.print("\t");
}
//sumDays是输入的月份的天数
for(int i=1;i<=sumDays;i++)
{
System.out.print(i+"\t");
if(calendar.get(Calendar.DAY_OF_WEEK) == 7)
{
System.out.println();
}
//加天数,否则date将永远等于设定的1,就不会触发星期等于7的时候换行
calendar.add(Calendar.DATE,1);
}
}
}
代码运行图
源码解析
首先用Scanner类让用户输入年份和月份,用变量存放用户输入的年份和月份,Calendar.getInstance();获取本地的时区对象,用Calendar类的set方法设置本地时间对象的年份和月份,值就是用来存放用户输入的年份和月份的变量,注意,java中月份是0-11,所以要减一。
将用户输入的月份设置为1号,用getActualMaximum(Calendar.DATE);获取用户输入的月份的最大天数,打印中文的星期System.out.println(“日\t一\t二\t三\t四\t五\t六”);用一个for循环,如果i小于用户输入的月份1号的星期数,就打印空格,也就是下图中空出来的地方。
再用一个for循环,输出月历中的天数,用一个if判断,当用户输入的月份天数星期到了7的时候就进行换行,如下图所示的地方换行
特别注意,因为前面将月份的今天数设置为了1,所以要加add(Calendar.DATE,1);每次加1,否则不会触发换行的判断if
原文链接:https://www.xiaorenjc.net/Java/javarili.html