黑马程序员技术交流社区

标题: java写一个简单日历 [打印本页]

作者: 1900    时间: 2016-2-3 14:24
标题: java写一个简单日历
今天在家写了一个简单的日历,根据用户输入的年份和月份打印出相应的日历,用到的知识主是前五天的,这个并不太难,主要是For循环和if条件判断以及  if else嵌套的使用。下面是代码:



package com.heima.For;

/*
* 日历制作
*         相应知识点
*                 1:键盘录入,Scanner
*                 2:逻辑运算符
*                 3:For循环
*                 4:if条件判断和if else嵌套
*
* 注释的比较少,但我觉得都是些需要注释的地方。
* 注释就相当于思路, 哈哈哈哈。大神请轻喷!{:2_36:}
* */
import java.util.Scanner;
public class Demo_Calendar {
        public static void main (String [] args ){
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入年份");
                int year = sc.nextInt();
                System.out.println("请输入月份");
                int month = sc.nextInt();
                int sum=0;                                                        //定义一个sum用来计算用户输入年份的总天数,
                for(int i=1; i<year; i++){
                        if(i%4==0&&i%100!=0||i%400==0){                        //判断用户输入年份是端年还是平年。端年366,平年356,可以看一下判断公式。
                                sum+=366;
                        }
                        else {
                                sum+=365;
                        }
                }
                for (int i=1; i<month; i++){                //i在For循环内,为局部变量,可以重复使用。
                        if (i==2) {
                                if (year%4==0&&year%100!=0||year%400==0){                //判断端平年的2月,平年28天,端年29天。
                                        sum+=29;
                                }
                                else {
                                        sum+=28;
                                }
                        }       
                       
                        else if(i==4||i==6||i==9||i==11){                                //判断除2月以外的月份中的大小月,大月31天,小月30天。
                                        sum+=30;
                        }
                        else{
                                sum+=31;
                        }
                               
                }
               
                sum+=1;
                int week =sum%7;                //判断星期,判断某天是星期几,就对7进行取%,余多少就是星期几。
                System.out.println("日\t一\t二\t三\t四\t五\t六");                //通过控制\t,输出我们想要的星期格式。
                for (int i=1; i<=week; i++){
                        System.out.print("\t");                //再次控制\t,使具体的天数出现在相应的星期下面
                }
               
                //再次对2月是否属于平年和端年以及大小月进行判断,
                int days=0;
                if (month==2) {
                        if (year%4==0&&year%100!=0||year%400==0){
                                days=29;
                        }
                        else {
                                days=28;
                        }
                }
                else{
                        if(month==4||month==6||month==9||month==11){
                                days+=30;
                        }
                        else{
                                days+=31;
                        }
                }
                for(int i=1; i<=days; i++){
                        if (sum%7==6){                //判断是否为星期六,如果是星期六,我们就输出相应的数字并且执行换行操作;
                                System.out.print(i+"\n");
                        }
                        else {                                //如果不是星期六,我们就输出相应的数字并且执行\t操作;主要是为了输出样式更好看,没有\t就会显得很拥挤,这和九九乘法表是一样的。
                                System.out.print(i+"\t");
                        }
                        sum++;                //因为i每循环一次,天数就增加一天,所以总天数sum也要增加。
                       
                }
                System.out.print("\n");                        //这两行可有可无,只是这样不会太拥挤,好看点。
                System.out.print("\n");
                System.out.println("这是"+ year+"年"+month+"月"+"的日历");
               
        }

}

捕获2.JPG (23.43 KB, 下载次数: 11)

检验一下

检验一下

作者: j6819236    时间: 2016-2-3 18:57
挺不错,赞~
作者: 15856681986    时间: 2016-2-3 19:30
厉害。。。。
作者: 晓寒轻    时间: 2016-2-3 20:16
加油。。。。come on




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2