好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java实现简单的万年历

本文实例为大家分享了Java实现简单万年历的具体代码,供大家参考,具体内容如下

1 要求

1、输入年份;
2、输入月份;
3、输出某年某月的日历。

2 思路

1、实现从控制台接收年和月,判断是否是闰年(判断是否是闰年:能被4整除但不能被100整除;或者能被400整除);

2、计算输入月份的天数;

3、计算该月第一天是星期几;

3.1 计算输入年份距离1900年1月1日的天数;
3.2 计算输入月份之前的天数(从当年年初开始);
3.3 将以上两组数据进行求和;
3.4 已知该月之前的天数,计算输入月份的第一天是星期几(从1900年1月1日(星期一)开始推算: 星期几 = 1 + 天数差 % 7 )。

4、按格式输出该月日历 。

3 源代码

?

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

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

import java.util.Scanner;

 

public class index {

     //每个月的天数

     public static int monthday( int month, int year) {

         if ((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 ) {

             int [] day = { 0 , 31 , 29 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };

             return day[month];

         } else {

             int [] day = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };

             return day[month];

         }

     }

 

     //月份总天数

     public static int monthdays( int month, int year) {

         int totaldays = 0 ;

         for ( int i = 1 ; i < month; i++) {

             totaldays = totaldays + monthday(i, year);

         }

         return totaldays;

     }

 

     //距离1900年的年份总天数

     public static int yeardays( int year){

         int yeardays = 0 ;

         for ( int i = 1900 ;i<year;i++){

             if ((i % 4 == 0 && i % 100 != 0 ) || i % 400 == 0 ) {

                 yeardays = yeardays+ 366 ;

             } else {

                 yeardays = yeardays+ 365 ;

             }

         }

         System.out.println(year+ "年距离1900年的总天数" +yeardays);

         return yeardays;

     }

 

     //输出日历

     public static void printCalendar( int month, int year){

         int totaldays = 0 ;

         if (year > 0 ) {

             if (month > 0 && month < 13 ) {

                 //距离1900年1月1日总天数

                 totaldays = monthdays(month,year)+yeardays(year);

                 System.out.println(year+ "年" +month+ "月1日距离1900年的总天数:" +totaldays);

                 System.out.println( "\n**********" +year+ "年" +month+ "月的日历为**********" );

                 System.out.println( "一\t二\t三\t四\t五\t六\t日\t" );

                 int week = 1 +totaldays% 7 ;

                 //根据1日为周几输出空格

                 for ( int i= 1 ;i<week;i++){

                     System.out.print( " \t" );

                 }

                 //输入具体日期

                 for ( int i= 1 ;i<=monthday(month,year);i++){

                     System.out.print(i+ "\t" );

                     if (week== 7 ){

                         week = 1 ; //重置为星期一

                         System.out.println();

                     } else {

                         week++;

                     }

                 }

             } else {

                 System.out.println( "输入的月份不合法!" );

             }

         } else {

             System.out.println( "输入的年份不合法!" );

         }

     }

 

     //主函数

     public static void main(String[] args) {

         Scanner scanner = new Scanner(System.in);

         System.out.println( "***********************欢迎使用万年历**************************" );

         System.out.println( "*********请选择你需要进行的操作(输入进行操作之前的数字)**********" );

         System.out.println( "********************1.查询某年某月的日历************************" );

         System.out.println( "********************2.结束操作*********************************" );

         System.out.print( "\n请选择你需要进行的操作:" );

         int a = scanner.nextInt();

         for ( int i= 0 ;i>= 0 ;i++) {

             switch (a) {

                 case 1 :

                     System.out.print( "请选择年份:" );

                     int year = scanner.nextInt();

                     System.out.print( "请选择月份:" );

                     int month = scanner.nextInt();

                     printCalendar(month, year);

                     System.out.print( "\n请选择你需要进行的操作:" );

                     a = scanner.nextInt();

                     break ;

                 case 2 :

                     System.out.println( "退出程序成功!" );

                     return ;

             }

         }

     }

}

4 结果截图

注意:我的周日是在最后一栏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:https://blog.csdn.net/qq_52916408/article/details/115820910

查看更多关于Java实现简单的万年历的详细内容...

  阅读:17次