今天在家写了一个简单的日历,根据用户输入的年份和月份打印出相应的日历,用到的知识主是前五天的,这个并不太难,主要是For循环和if条件判断以及 if else嵌套的使用。下面是代码:
package com.heima.For;
/*
* 日历制作
* 相应知识点
* 1:键盘录入,Scanner
* 2:逻辑运算符
* 3:For循环
* 4:if条件判断和if else嵌套
*
* 注释的比较少,但我觉得都是些需要注释的地方。
* 注释就相当于思路, 哈哈哈哈。大神请轻喷!{:2_36:}
* */
import java.util.Scanner;
public class Demo_Calendar {
public static void main (String [] args ){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();
int sum=0; //定义一个sum用来计算用户输入年份的总天数,
for(int i=1; i<year; i++){
if(i%4==0&&i%100!=0||i%400==0){ //判断用户输入年份是端年还是平年。端年366,平年356,可以看一下判断公式。
sum+=366;
}
else {
sum+=365;
}
}
for (int i=1; i<month; i++){ //i在For循环内,为局部变量,可以重复使用。
if (i==2) {
if (year%4==0&&year%100!=0||year%400==0){ //判断端平年的2月,平年28天,端年29天。
sum+=29;
}
else {
sum+=28;
}
}
else if(i==4||i==6||i==9||i==11){ //判断除2月以外的月份中的大小月,大月31天,小月30天。
sum+=30;
}
else{
sum+=31;
}
}
sum+=1;
int week =sum%7; //判断星期,判断某天是星期几,就对7进行取%,余多少就是星期几。
System.out.println("日\t一\t二\t三\t四\t五\t六"); //通过控制\t,输出我们想要的星期格式。
for (int i=1; i<=week; i++){
System.out.print("\t"); //再次控制\t,使具体的天数出现在相应的星期下面
}
//再次对2月是否属于平年和端年以及大小月进行判断,
int days=0;
if (month==2) {
if (year%4==0&&year%100!=0||year%400==0){
days=29;
}
else {
days=28;
}
}
else{
if(month==4||month==6||month==9||month==11){
days+=30;
}
else{
days+=31;
}
}
for(int i=1; i<=days; i++){
if (sum%7==6){ //判断是否为星期六,如果是星期六,我们就输出相应的数字并且执行换行操作;
System.out.print(i+"\n");
}
else { //如果不是星期六,我们就输出相应的数字并且执行\t操作;主要是为了输出样式更好看,没有\t就会显得很拥挤,这和九九乘法表是一样的。
System.out.print(i+"\t");
}
sum++; //因为i每循环一次,天数就增加一天,所以总天数sum也要增加。
}
System.out.print("\n"); //这两行可有可无,只是这样不会太拥挤,好看点。
System.out.print("\n");
System.out.println("这是"+ year+"年"+month+"月"+"的日历");
}
}
|
|