giegie666 发表于 2021-12-7 21:51:20

想在这代码上用窗口实现这几个功能

输入1查看上个月日历

输入2查看下个月日历

输入3查看去年本月日历

输入4查看明年本月日历

输入5查看指定月份日历
package javaapplication26;

import java.util.Scanner;

/**
* 控制台万年历 根据输入的年月,输出当月日历
*
* @author july
*
*/
public class Calendar {

        public static void main(String[] args) {
               
                /**
               * 第一步:从控制台获得输入的年月
               */
                Scanner sc = new Scanner(System.in);
                while (true) {
                        System.out.println("请输入年份 (输入exit退出程序)");
                        String tempyear = sc.next();
                        if (!tempyear.equals("exit")) {
                                //year强转成int使用
                                int year=Integer.parseInt(tempyear);
                                System.out.println("请输入月份");
                                int month = sc.nextInt();

                                /**
                               * 第二步:判断是不是闰年
                               */
                                boolean isleap = false;
                                if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                                        isleap = true;
                                } else {
                                        isleap = false;
                                }

                                /**
                               * 第三步:判断该月有多少天
                               */
                                int monthDays = 0;
                                switch (month) {
                                // 大月份
                                case 1:
                                case 3:
                                case 5:
                                case 7:
                                case 8:
                                case 10:
                                case 12:
                                        monthDays = 31;
                                        break;
                                // 小月份
                                case 4:
                                case 6:
                                case 9:
                                case 11:
                                        monthDays = 30;
                                        break;
                                // 2月份
                                default:
                                        if (isleap) {
                                                monthDays = 29;
                                        } else {
                                                monthDays = 28;
                                        }

                                }

                                /**
                               * 第四步:判断该月距离1990年1月1日有多少天
                               * 1.按照年份差距计算天数
                               * 2.月份距离本年1月1日有多少天
                               *3.两部分求和
                               */
                                int yearCount = 0;
                                int monthCount = 0;
                                int sumCount = 0;
                                // 计算年份相差的天数
                                for (int i = 1990; i < year; i++) {
                                        if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                                                yearCount += 366;
                                        } else {
                                                yearCount += 365;
                                        }
                                }
                                // 计算月份距离本年1月1日的天数
                                for (int i = 1; i < month; i++) {
                                        switch (i) {
                                        // 大月份
                                        case 1:
                                        case 3:
                                        case 5:
                                        case 7:
                                        case 8:
                                        case 10:
                                        case 12:
                                                monthCount += 31;
                                                break;
                                        // 小月份
                                        case 4:
                                        case 6:
                                        case 9:
                                        case 11:
                                                monthCount += 30;
                                                break;
                                        // 2月份
                                        default:
                                                if (isleap) {
                                                        monthCount += 29;
                                                } else {
                                                        monthCount += 28;
                                                }
                                        }
                                }
                                // 两部分之和即相距天数
                                sumCount = yearCount + monthCount;

                                /**
                               * 第五步:计算当前月第一天是周几 已知1990年1月1日是周一,根据上一步计算的时间距离求
                               */
                                int week = (sumCount % 7) + 1;
                                /**
                               * 第六步:打印当前月日历
                               */
                                // 打印输入的年月信息
                                System.out.println("\t" + year + "年" + month + "月");
                                // 打印头部
                                System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
                                // 打印可能的空白
                                for (int i = 0; i < week; i++) {
                                        System.out.print("\t");
                                }
                                // 打印日历
                                for (int i = 1; i <= monthDays; i++) {
                                        System.out.print(i + "\t");
                                        if ((i + week) % 7 == 0) {
                                                System.out.println();
                                        }
                                }
                                System.out.println();
                        }else {
                                //输入了exit,退出系统
                                System.out.println("退出系统");
                                System.exit(0);
                        }
                }
        }
}

giegie666 发表于 2021-12-7 22:53:07

有人吗

nzdf 发表于 2021-12-7 23:08:57

giegie666 发表于 2021-12-7 22:53
有人吗

你的问题是什么,贴出来的代码有什么问题吗?

giegie666 发表于 2021-12-7 23:23:31

nzdf 发表于 2021-12-7 23:08
你的问题是什么,贴出来的代码有什么问题吗?

想用窗口来运行结果,然后用另外的窗口实现这几个功能
输入1查看上个月日历

输入2查看下个月日历

输入3查看去年本月日历

输入4查看明年本月日历

输入5查看指定月份日历

nzdf 发表于 2021-12-7 23:54:29

giegie666 发表于 2021-12-7 23:23
想用窗口来运行结果,然后用另外的窗口实现这几个功能
输入1查看上个月日历



写了个答案可以参考下,但是不建议这样问问题,可以具体说明你是哪里不清楚怎么写package com.kr.yu_c;

import java.util.Scanner;
import java.util.TimeZone;

/**
* 控制台万年历 根据输入的年月,输出当月日历
*
* @author july
*/
public class Calendar {

    public static void main(String[] args) {

      /**
         * 第一步:从控制台获得输入的年月
         */
      Scanner sc = new Scanner(System.in);
      while (true) {
//            System.out.println("请输入年份 (输入exit退出程序)");
            System.out.println("输入1查看上个月日历\n" +
                  "\n" +
                  "输入2查看下个月日历\n" +
                  "\n" +
                  "输入3查看去年本月日历\n" +
                  "\n" +
                  "输入4查看明年本月日历\n" +
                  "\n" +
                  "输入5查看指定月份日历");
            int select = Integer.parseInt(sc.next());

            // //获取东八区时间
            java.util.Calendar c = java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
            //获取年
            int year = c.get(java.util.Calendar.YEAR);
            //获取月份,0表示1月份
            int month = c.get(java.util.Calendar.MONTH) + 1;
            switch (select) {
                case 1:
                  if (month == 1) {
                        month = 12;
                        year = year - 1;
                  }
                  break;
                case 2:
                  if (month == 12) {
                        month = 1;
                        year = year + 1;
                  }
                  break;
                case 3:
                  year = year - 1;
                  break;
                case 4:
                  year = year + 1;
                  break;
                case 5:
                  System.out.println("输入年份:");
                  year = Integer.parseInt(sc.next());
                  System.out.println("输入月份:");
                  month = Integer.parseInt(sc.next());
                  break;
            }
            printCal(year, month);
//                        if (!tempyear.equals("exit")) {
//                              //year强转成int使用
//                              int year=Integer.parseInt(tempyear);
//                              System.out.println("请输入月份");
//                              int month = sc.nextInt();
//
//
//                        }else {
//                              //输入了exit,退出系统
//                              System.out.println("退出系统");
//                              System.exit(0);
//                        }
      }
    }

    private static void printCal(int year, int month) {
      /**
         * 第二步:判断是不是闰年
         */
      boolean isleap = false;
      if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
            isleap = true;
      } else {
            isleap = false;
      }

      /**
         * 第三步:判断该月有多少天
         */
      int monthDays = 0;
      switch (month) {
            // 大月份
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                monthDays = 31;
                break;
            // 小月份
            case 4:
            case 6:
            case 9:
            case 11:
                monthDays = 30;
                break;
            // 2月份
            default:
                if (isleap) {
                  monthDays = 29;
                } else {
                  monthDays = 28;
                }

      }

      /**
         * 第四步:判断该月距离1990年1月1日有多少天
         * 1.按照年份差距计算天数
         * 2.月份距离本年1月1日有多少天
         *3.两部分求和
         */
      int yearCount = 0;
      int monthCount = 0;
      int sumCount = 0;
      // 计算年份相差的天数
      for (int i = 1990; i < year; i++) {
            if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                yearCount += 366;
            } else {
                yearCount += 365;
            }
      }
      // 计算月份距离本年1月1日的天数
      for (int i = 1; i < month; i++) {
            switch (i) {
                // 大月份
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                  monthCount += 31;
                  break;
                // 小月份
                case 4:
                case 6:
                case 9:
                case 11:
                  monthCount += 30;
                  break;
                // 2月份
                default:
                  if (isleap) {
                        monthCount += 29;
                  } else {
                        monthCount += 28;
                  }
            }
      }
      // 两部分之和即相距天数
      sumCount = yearCount + monthCount;

      /**
         * 第五步:计算当前月第一天是周几 已知1990年1月1日是周一,根据上一步计算的时间距离求
         */
      int week = (sumCount % 7) + 1;
      /**
         * 第六步:打印当前月日历
         */
      // 打印输入的年月信息
      System.out.println("\t" + year + "年" + month + "月");
      // 打印头部
      System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六");
      // 打印可能的空白
      for (int i = 0; i < week; i++) {
            System.out.print("\t");
      }
      // 打印日历
      for (int i = 1; i <= monthDays; i++) {
            System.out.print(i + "\t");
            if ((i + week) % 7 == 0) {
                System.out.println();
            }
      }
      System.out.println();
    }
}

giegie666 发表于 2021-12-8 07:59:52

nzdf 发表于 2021-12-7 23:54
写了个答案可以参考下,但是不建议这样问问题,可以具体说明你是哪里不清楚怎么写

这能创建窗口吗

nzdf 发表于 2021-12-8 10:10:43

giegie666 发表于 2021-12-8 07:59
这能创建窗口吗

不明白你说的窗口是啥意思,frame?console?

giegie666 发表于 2021-12-8 17:21:17

nzdf 发表于 2021-12-8 10:10
不明白你说的窗口是啥意思,frame?console?

创建主界面,用于实现界面frame
页: [1]
查看完整版本: 想在这代码上用窗口实现这几个功能