徐稳权


私信TA

用户名:18671468805

访问量:10790

签 名:

等  级
排  名 566
经  验 4342
参赛次数 0
文章发表 58
年  龄 0
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:

解题思路:这个题先算出天数,然后在用天数%7就可以得到每个月的第一天的与上个月连接的空格数,在用空格数加上1,因为打印的时候一般都是从星期天开始,所以要加上1,然后在判断月份,然后在输出就可以了

注意事项:输出的时候一定要用二个for循环,第一个控制空格,第二个控制月份的天数(不是嵌套for),结尾的时候也要注意一下。

参考代码:

import java.util.Scanner;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner = new Scanner(System.in);
        int year = scanner.nextInt();
        int month = scanner.nextInt();
        int day = 0;
        if (year >= 2007) {
            for (int i = 2007; i < year; i++) {
                if ((i % 400 == 0 && i % 100 != 0) || i % 4 == 0) {
                    day += 366;
                } else {
                    day += 365;
                }

            }
            for (int i = 1; i < month; i++) {
                switch (i) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day += 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    day += 30;
                    break;
                case 2:
                    if ((year % 400 == 0 && year % 100 != 0) || year % 4 == 0) {
                        day += 29;
                    } else {
                        day += 28;
                    }
                    break;
                default:
                    break;
                }

            }
            int day1 = 0;
            switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                day1 = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                day1 = 30;
                break;
            case 2:
                if ((year % 400 == 0 && year % 100 != 0) || year % 4 == 0) {
                    day1 = 28;
                } else {
                    day1 = 27;
                }
                break;
            default:
                break;
            }
            
            System.out.println("---------------------");
            System.out.println(" Su Mo Tu We Th Fr Sa");
            System.out.println("---------------------");
            
            int teem = ( 1+day % 7) % 7;
            for (int j = 0; j < teem; j++) {
                System.out.print("   ");
            }
            for (int i = 1; i <= day1; i++) {
                System.out.printf("%3d", i);
                if (teem == 6) {
                    System.out.println();
                }
                teem++;
                teem = teem % 7;
            }
            if(teem==0)
            {
                System.out.println("---------------------");
               
            }
            else{
                System.out.println();
                System.out.print("---------------------");
            }
            
        }
    }
}


 

0.0分

2 人评分

  评论区

不错,但是那个判断每个月的天数实际上可以直接打表存数组里,单独判断一下2月份就可以了
2021-02-21 16:39:17
  • «
  • 1
  • »