综合练习1 打印日历
使用Calendar类计算并打印当前月份的日历,效果如下:
/*综合练习1 打印日历
* 使用Calendar类计算并打印当前月份的日历,效果如下:
*
* 2021-2
* 日 一 二 三 四 五 六
* 1 2 3 4 5 6
* 7 8 9 10 11 12 13
* 14 15 16 17 18 19 20
* 21 22 23 24 25 26 27
* 28
*
* */
package cylk;
import java.util.Calendar;
public class Zhlx1 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance(); //创建今天的日历对象
StringBuilder builder = new StringBuilder();//创建字符生成器,用于记录输出内容
int year = calendar.get(Calendar.YEAR); //返回今天的年,数据类型为int
int month = calendar.get(Calendar.MONTH)+1; //返回今天的月,数据类型为int
calendar.add(Calendar.MONTH,1); //操作对象的月份加一。因为日历类的Calendar.MONTH字段从0开始,返回本月需要加1
calendar.set(Calendar.DATE,0); //设置对象的天数为0,即上个月的最后一天。为了接下来,获取本月的总天数。
int dayCount = calendar.get(Calendar.DAY_OF_MONTH); //返回本月总天数,数据类型为int
calendar.set(Calendar.DAY_OF_MONTH, 1); //设置对象的天数为1,即本月1号。
int week = calendar.get(Calendar.DAY_OF_WEEK); //返回本月1号的星期数,数据类型为int,1=星期日,2=星期一,以此类推
int day = 1;//本月1号,第一天,后面用来递增输入日历
//向字符串生成器builder中,添加内容
builder.append("\t\t"+year+"-"+month+"\n"); //添加年月
builder.append("日\t一\t二\t三\t四\t五\t六\n"); //添加星期标题,星期列
//先打印日历第一行,含有空白的行
for(int i = 1;i <= 7;i++) {
if(i < week) {
builder.append("\t"); //输出1号之前的空格
} else {
builder.append(day+"\t");
day++; //天数的输出
}
}
builder.append("\n"); //换行
//再输出日历下面几行
int i = 1; //变量,用于统计每行输出
while(day <= dayCount) {
builder.append(day + "\t");
if(i % 7 == 0) {
builder.append("\n"); //换行
}
i++; //换行变量增加
day++; //天数数字增加
}
System.out.println(builder);
}
}