Code Review

Java编写的日历,输入年月,输出这个月的日期与星期的code:


import java.util.Scanner;

	public class calendar {
	    public static void main(String[] args) {
	        for (int g = 0; g < 100; g++) {
	            Scanner in = new Scanner(System.in);
	            System.out.println("\n请输入年份:");
	            int year = in.nextInt();
	            System.out.println("请输入月份:");
	            int month = in.nextInt();
	            int sum = 0;
	            int k = 0;
	            for (int i = 1; i <= month - 1; i++) {
	                if (i == 2) {
	                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
	                        sum = sum + 29;
	                    } else {
	                        sum = sum + 28;
	                    }
	                } else {
	                    if (i == 4 || i == 6 || i == 9 || i == 11) {
	                        sum = sum + 30;
	                    } else {
	                        sum = sum + 31;
	                    }
	                }
	            }
	            for (int a = 1900; a <= year - 1; a++) {
	                if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
	                    sum = sum + 366;
	                } else {
	                    sum += 365;
	                }
	            }
	            sum += 1;
	            int wekday = sum % 7;
	            System.out.println("日\t一\t二\t三\t四\t五\t六");
	            for (int j = 1; j <= wekday; j++) {
	                System.out.print("\t");
	            }
	            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
	                if (month == 2) {
	                    k = 29;
	                } else if (month == 4 || month == 6 || month == 9 || month == 11) {
	                    k = 30;
	                } else {
	                    k = 31;
	                }
	            } else {
	                if (month == 2) {
	                    k = 28;
	                } else if (month == 4 || month == 6 || month == 9 || month == 11) {
	                    k = 30;
	                } else {
	                    k = 31;
	                }
	            }
	            for (int i = 1; i <= k; i++) {
	                if (sum % 7 == 6) {
	                    System.out.print(i + "\n");
	                } else {
	                    System.out.print(i + "\t");
	                }
	                sum++;
	            }
	        }
	    }
	}

备注:

自我评审 存在的问题
1 代码没有注释,别人不一定看得懂什么意思
2 变量要说明代表着什么,不然降低了可读性
3 命名不规范,大小写不注意,命名没有意义
4 代码函数比较多的时候,尽量不要使用缩写
5 实现了功能的同时,我觉得还要注意逻辑顺序编写程序
6 运行后,没有考虑不输入年份或月份后出现的异常情况怎么处理
7 运行后,我输入的不是数字而是字母却报错,说明没处理好异常情况
自我评审 优点
1 代码格式布局规范
2 没有冗余的代码,这点很好
3 代码正确运行后,界面布局日期和星期整齐对齐

posted on 2017-03-22 16:35  全世界每一处都是你  阅读(125)  评论(0)    收藏  举报

导航