【java】列印月曆
阿新 • • 發佈:2018-12-25
package exercise; import java.util.*; import java.lang.*;//Math.PI public class test1{ public static void main(String[] args){ printYearAndMouth(); printTitle(); int sum=sumofyear()+sumofmouth(); sum++; printContent(sum%7); } private static int year=-1; private static int mouth=-1; static int[] mouthday={31,28,31,30,31,30,31,31,30,31,30,31}; //使用者輸入年份月份 private static void printYearAndMouth(){ Scanner in= new Scanner(System.in); System.out.print("請輸入年份:"); year=in.nextInt(); System.out.print("請輸入月份:"); mouth=in.nextInt(); } //計算1900-year的天數 private static int sumofyear(){ int sum=0; for(int i=1900;i<year;i++){ sum+=365; if(isLeapYear(i)) sum+=1; } return sum; } private static boolean isLeapYear(int year){ return year%400==0||year%4==0&&year%100!=0; } //mouth前幾個月的天數和 private static int sumofmouth(){ int sum=0; for(int i=0;i<mouth-1;i++) sum+=mouthday[i]; if(mouth>=3&&isLeapYear(year)) sum++; return sum; } //顯示標題和星期 private static void printTitle(){ String[] mouthof={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"}; System.out.println("\t\t"+year+"\t\t"+mouthof[mouth-1]); String[] week={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; for(int i=0;i<week.length;i++) System.out.print(week[i]+"\t"); System.out.println(); } //根據mouth第一天是星期幾列印月份內容 private static void printContent(int day){ int step=0;//前面的空格 if(day==0)//星期日 step=6; else step=day-1; for(int i=0;i<step;i++) System.out.print("\t"); for(int i=0;i<mouthday[mouth-1];i++){ System.out.print(i+1); if((day+i)%7!=0) System.out.print("\t"); else System.out.println(); } } }