zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    C#密封类和密封方法
    C#类和结构以及堆和栈大烩菜(本来就迷,那就让暴风来的更猛烈吧!)
    C#类、对象、方法、属性详解(摘)感谢博客园,感谢提供者。
    软件工程第十五周总结
    软件工程课堂十一(计算最长英语单词链)
    软件工程第十四周总结
    梦断代码阅读笔记03
    软件工程课堂十(找水王)
    软件工程课堂九(用户体验评价)
    软件工程第十三周总结
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/5058407.html
Copyright © 2011-2022 走看看