Java简易日历
《Java程序設(shè)計(jì)2.3》
在頁(yè)面輸入年份(1900以后),輸出該年份的日歷
在編寫(xiě)的過(guò)程中問(wèn)題主要就是兩個(gè),一個(gè)是日期不是和星期對(duì)應(yīng)的,有的是錯(cuò)行的,找一下對(duì)應(yīng)的空格就可以了。
另一個(gè)個(gè)就是三目運(yùn)算理解的稍微有的難度,但是自己還是可以看懂的,已經(jīng)把改成if語(yǔ)句的寫(xiě)在三目運(yùn)算后面了,不是很難理解。
import java.util.Scanner;public class MyCalendar {public static void main(String[] args) {String Weeks = " Su Mo Tu We Th Fr Sa ";int i,j;System.out.println("Please input the year you want to search:");int year = new Scanner(System.in).nextInt();int Ospa3 = 1;for (i=1900; i<year; i++)if (i%4==0 && i%100!=0 || i%400==0)//判斷是否是閏年Ospa3 += 2;elseOspa3++;Ospa3 %= 7;System.out.println("\t\t\t\t\t\tCalendar of " + year+"\n");i = 1;while ( i<=3 ) {//輸出星期System.out.print(Weeks);i++;}System.out.println("");//三個(gè)月之間的空格int spa1=0,spa2=0,spa3=0,cou1=0,cou2=0,cou3=0;//3個(gè)月的1號(hào)對(duì)應(yīng)的是星期幾,當(dāng)月總天數(shù)int day1=0, day2=0, day3=0;//3個(gè)月的當(dāng)前日期boolean leap=year%4==0 && year%100 !=0 || year%400==0;for (j=1; j<=28; j++){//大概的行數(shù)if ((j-1)%7==0) {//28/4=7行為三個(gè)月,一共12個(gè)月,7*4=28day1 = 1;day2 = 1;day3 = 1;switch (j/7) {case 0 :spa1 = Ospa3;cou1 = 31;//1月spa2 = (spa1 + cou1) %7;cou2 = leap ? 29 : 28;//2月spa3 = (spa2 + cou2) %7;cou3 = 31;//3月Ospa3 = spa3;break;case 1 :spa1 = (Ospa3 + cou3) %7;cou1 = 30;spa2 = (spa1 + cou1) % 7;cou2 = 31;spa3 = (spa2 + cou2) % 7;cou3 = 30;Ospa3 = spa3;break;case 2:spa1 = (Ospa3 + cou3) % 7;cou1 = 31;spa2 = (spa1 + cou2) % 7;cou2 = 31;spa3 = (spa2 + cou2) % 7;cou3 = 30;Ospa3 = spa3;break;case 3:spa1 = (Ospa3 + cou3) % 7;cou1 = 31;spa2 = (spa1 + cou1) % 7;cou2 = 30;spa3 = (spa2 + cou2) % 7;cou3 = 31;break;}}for(i = 1; i<=21; i++){//每行3*7=21列if((i-1)/7 == 0)System.out.print(spa1--<=0 && day1<=cou1? day1<10?" 0"+ day1++ : " " + day1++ : " ");/*三目運(yùn)算等同于: if(spa1--<=0 && day<=cou1)if(day1<10) System.out.print(" 0" + day1++);else System.out.print(" "+ day1++);elseSystem.out.print(" ");*/else if ((i-1)/7 ==1)System.out.print(spa2--<=0 && day2<=cou2? day2<10? " 0"+ day2++ : " " + day2++ : " ");elseSystem.out.print(spa3--<=0 && day3<=cou3? day3<10?" 0"+ day3++ : " " + day3++ : " ");if (i%7==0)System.out.print(" ");}System.out.println("");//換行}} }?
?
總結(jié)
- 上一篇: 瓦里安将携肿瘤治疗尖峰技术和智慧放疗云生
- 下一篇: java美元兑换,(Java实现) 美元