• Java基本语法_循环练习系列(二)——万年历


    写万年历大致可以分为以下几个步骤:

    1.根据用户输入的年份判断该年是否是闰年。

    2.根据用户输入的月份计算该月的天数。

    3.计算输入的年份之前的总天数。

    4.计算输入的月份之前的天数。

    5.计算该月的第一天是星期几,然后输出日历。

    将这个大工程分为这几步就简单多了,可以很好的学习循环语句哦。

     1 public class Test4 {
     2 
     3     /**
     4      * @param args
     5      */
     6     public static void main(String[] args) {
     7         // TODO Auto-generated method stub
     8         System.out.println("------万年历------");
     9         System.out.print("请输入要查询的年份:");
    10         Scanner input=new Scanner(System.in);
    11         int year=input.nextInt();
    12         boolean runNian;
    13         int totalDays=0;
    14         int days=0;
    15         
    16         //判断改年为闰年还是平年
    17         if((year%4==0&&year%100!=0)||year%400==0){
    18             runNian=true;
    19         }else{
    20             runNian=false;
    21         }
    22         if(runNian){
    23             System.out.println(year+"年是闰年");
    24         }else{
    25             System.out.println(year+"年是平年");
    26         }
    27         //计算该年之前一共的天数(从公元1年开始到输入年份前一年)
    28         for(int i=1;i<year;i++){
    29             if((i%4==0&&i%100!=0)||i%400==0){
    30                 totalDays+=366;
    31             }else{
    32                 totalDays+=365;
    33             }
    34         }
    35         System.out.println(year+"年之前一共有"+totalDays+"天");
    36         //判断输入的月份有多少天,并且计算该月之前一共的天数
    37         System.out.print("请输入要查询的月份:");
    38         int month=input.nextInt();
    39         int beforeDays=0;
    40         int i=1;
    41         do{
    42             switch(i){
    43             case 1:
    44             case 3:
    45             case 5:
    46             case 7:
    47             case 8:
    48             case 10:
    49             case 12:days=31;break;
    50             case 2:
    51                 if(runNian){
    52                     days=29;
    53                 }else{
    54                     days=28;
    55                 }
    56                 break;
    57             default:
    58                 days=30;
    59             break;
    60             }
    61             if(i<month){
    62                 beforeDays=beforeDays+days;
    63             }
    64             i++;
    65             
    66         }while(i<=month);
    67             totalDays+=beforeDays;
    68             System.out.println(year+"年"+month+"月之前一共有"+beforeDays+"天");
    69             System.out.println("该月有"+days+"天");
    70             //输出日历,0代表星期日,1~6分别代表星期一到星期六(重点,以后注意看,这段是我写时卡克的地方)
    71             System.out.println("星期日	星期一	星期二	星期三	星期四	星期五	星期六");
    72             int s=(totalDays+1)%7;
    73             //输出空格
    74             for(int nulNum=0;nulNum<s;nulNum++){
    75                 System.out.print("	");
    76             }
    77             //在输完空格的位置上输出本月的日历
    78             for(int j=1;j<=days;j++){
    79                 //该月第一天之前要输出的空格数,如果是星期五,前面输出5个空格
    80                 System.out.print(j+"	");
    81                 if((totalDays+j)%7==6){
    82                     System.out.println();
    83                 }
    84             }
    85             
    86         
    87     }
    88 
    89 }
  • 相关阅读:
    一个好用的小图标库
    前端应用笔记
    HttpClient的使用今天遇到一个巨坑——HttpEntity内容取不出来
    HttpClient忽略SSL证书
    SpringBoot+Thyemelaf开发环境正常,打包jar发到服务器就报错Template might not exist or might not be accessible
    查询Mysql数据库所有数据库所占磁盘空间大小
    Docker安装并运行mysql5.6数据库
    Docker下载镜像太慢问题
    Docker安装Nginx
    vue-router导航守卫
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/5058407.html
Copyright © 2020-2023  润新知