1. 程式人生 > 其它 >並排輸出日曆(自己寫的,很繁瑣,沒有太大技巧)

並排輸出日曆(自己寫的,很繁瑣,沒有太大技巧)

今天做題做到了這個題,經過多方輾轉,最後還是選擇了自己想出來的方法,雖然很笨,很繁瑣,終歸還是在一點點的探索中寫出來了,
之後也有看過其他人寫的這個題的程式碼,經過思考理解了,也明白了我的程式碼和其他人的程式碼之間的區別,我想寫出迴圈來,但終究水
平不夠,只能一個個的寫出所謂的迴圈,但是,我還是在寫程式碼的過程中收穫了很多,更熟悉了for迴圈(因為這個程式碼一直在用for
迴圈),相信日後定能更熟練的掌握for了,不建議大家是用這種方法,這真的是最笨的方法了



package SevenTest;
import java.util.Scanner;
import java.util.Arrays;
public class calender2 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("Please enter a month");
int month = scan.nextInt();
int Days1;
//知道在2019年某月份前有多少天
Days1 = getDaysFrom1900(month);
//知道這月有多少天
int days1;
days1 = getDaysFromMonth(month);
//判斷一個月的第一天是星期幾
int kongge = Days1 % 7;
//輸出日曆
int count1 = 0;

int Days2;
Days2 = getDaysFrom1900(month+1);
int days2;
days2 = getDaysFromMonth(month+1);
int kongge2 = Days2 % 7;
int count2 = 0;
System.out.println("一\t二\t三\t四\t五\t六\t日\t"+"\t\t"+"一\t二\t三\t四\t五\t六\t日\t");//輸出表頭
//先輸出第一行
for (int i = 0; i < kongge; i++) {
System.out.print("\t");
}//輸出前面的空格
for (int i = 1; i <= 7-kongge; i++) {
System.out.print(i + "\t");
}
System.out.print("\t\t");
for(int i=0;i<kongge2;i++){
System.out.print("\t");
}
for(int i=1;i<=7-kongge2;i++)
System.out.print(i+"\t");
System.out.println();
//輸出第二行
for(int i=8-kongge;i<=14-kongge;i++)
System.out.print(i + "\t");
System.out.print("\t\t");
for(int i=8-kongge2;i<=14-kongge2;i++)
System.out.print(i + "\t");
System.out.println();
//輸出第三行
for (int j = 15 - kongge; j <= 21 - kongge; j++)
System.out.print(j + "\t");
System.out.print("\t\t");
for (int j = 15 - kongge2; j <=21 - kongge2; j++)
System.out.print(j + "\t");
System.out.println();
//輸出第四行
for (int z = 22 - kongge; z <= 28 - kongge; z++)
System.out.print(z + "\t");
System.out.print("\t\t");
for (int z = 22 - kongge2; z <= 28 - kongge2; z++)
System.out.print(z + "\t");
System.out.println();
//輸出第五行
for (int h = 29 - kongge; h <= 35 - kongge&&h<=days1; h++)
System.out.print(h + "\t");
for(int y=days1;y<days1+7-(days1-28+kongge);y++)
System.out.print("\t");
System.out.print("\t\t");
for (int h = 29 - kongge2; h<=days2&&h<=35-kongge2; h++)
System.out.print(h + "\t");
System.out.println();
//列印第6行
for (int h = 35 - kongge; h <= 41 - kongge&&h<=days1; h++)
System.out.print(h+"\t");
for(int y=days1;y<days1+7-(days1-28+kongge);y++)
System.out.print("\t");
System.out.print("\t\t");
System.out.print("\t\t\t\t\t\t");
for (int h = 36 - kongge2; h<=days2&&h<=41-kongge2; h++){
System.out.print(h + "\t");}
System.out.println();
scan.close();
}



//寫方法分別獲取其到1900的天數,以及是否為閏年
public static int getDaysFrom1900 ( int month1){
int days = 0;

for (int i = 1990; i < 2019; i++) {
days += isLeapYear(i) ? 366 : 365;
}
for (int i = 1; i < month1; i++) {
days += getDaysFromMonth(i);
}
return days;
}

public static int getDaysFromMonth ( int month){
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
return 28;
default:
return 30;

}
}

public static boolean isLeapYear ( int year){
return (year % 4 == 0);


}
}