鱼C论坛

 找回密码
 立即注册
查看: 1931|回复: 7

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

[复制链接]
发表于 2021-12-7 21:51:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入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);
                        }
                }
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-12-7 22:53:07 From FishC Mobile | 显示全部楼层
有人吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-7 23:08:57 | 显示全部楼层

你的问题是什么,贴出来的代码有什么问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-7 23:23:31 From FishC Mobile | 显示全部楼层
nzdf 发表于 2021-12-7 23:08
你的问题是什么,贴出来的代码有什么问题吗?

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

输入2查看下个月日历

输入3查看去年本月日历

输入4查看明年本月日历

输入5查看指定月份日历
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  2. import java.util.Scanner;
  3. import java.util.TimeZone;

  4. /**
  5. * 控制台万年历 根据输入的年月,输出当月日历
  6. *
  7. * @author july
  8. */
  9. public class Calendar {

  10.     public static void main(String[] args) {

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

  27.             // //获取东八区时间
  28.             java.util.Calendar c = java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
  29.             //获取年
  30.             int year = c.get(java.util.Calendar.YEAR);
  31.             //获取月份,0表示1月份
  32.             int month = c.get(java.util.Calendar.MONTH) + 1;
  33.             switch (select) {
  34.                 case 1:
  35.                     if (month == 1) {
  36.                         month = 12;
  37.                         year = year - 1;
  38.                     }
  39.                     break;
  40.                 case 2:
  41.                     if (month == 12) {
  42.                         month = 1;
  43.                         year = year + 1;
  44.                     }
  45.                     break;
  46.                 case 3:
  47.                     year = year - 1;
  48.                     break;
  49.                 case 4:
  50.                     year = year + 1;
  51.                     break;
  52.                 case 5:
  53.                     System.out.println("输入年份:");
  54.                     year = Integer.parseInt(sc.next());
  55.                     System.out.println("输入月份:");
  56.                     month = Integer.parseInt(sc.next());
  57.                     break;
  58.             }
  59.             printCal(year, month);
  60. //                        if (!tempyear.equals("exit")) {
  61. //                                //year强转成int使用
  62. //                                int year=Integer.parseInt(tempyear);
  63. //                                System.out.println("请输入月份");
  64. //                                int month = sc.nextInt();
  65. //
  66. //
  67. //                        }else {
  68. //                                //输入了exit,退出系统
  69. //                                System.out.println("退出系统");
  70. //                                System.exit(0);
  71. //                        }
  72.         }
  73.     }

  74.     private static void printCal(int year, int month) {
  75.         /**
  76.          * 第二步:判断是不是闰年
  77.          */
  78.         boolean isleap = false;
  79.         if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
  80.             isleap = true;
  81.         } else {
  82.             isleap = false;
  83.         }

  84.         /**
  85.          * 第三步:判断该月有多少天
  86.          */
  87.         int monthDays = 0;
  88.         switch (month) {
  89.             // 大月份
  90.             case 1:
  91.             case 3:
  92.             case 5:
  93.             case 7:
  94.             case 8:
  95.             case 10:
  96.             case 12:
  97.                 monthDays = 31;
  98.                 break;
  99.             // 小月份
  100.             case 4:
  101.             case 6:
  102.             case 9:
  103.             case 11:
  104.                 monthDays = 30;
  105.                 break;
  106.             // 2月份
  107.             default:
  108.                 if (isleap) {
  109.                     monthDays = 29;
  110.                 } else {
  111.                     monthDays = 28;
  112.                 }

  113.         }

  114.         /**
  115.          * 第四步:判断该月距离1990年1月1日有多少天
  116.          * 1.按照年份差距计算天数
  117.          * 2.月份距离本年1月1日有多少天
  118.          *  3.两部分求和
  119.          */
  120.         int yearCount = 0;
  121.         int monthCount = 0;
  122.         int sumCount = 0;
  123.         // 计算年份相差的天数
  124.         for (int i = 1990; i < year; i++) {
  125.             if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
  126.                 yearCount += 366;
  127.             } else {
  128.                 yearCount += 365;
  129.             }
  130.         }
  131.         // 计算月份距离本年1月1日的天数
  132.         for (int i = 1; i < month; i++) {
  133.             switch (i) {
  134.                 // 大月份
  135.                 case 1:
  136.                 case 3:
  137.                 case 5:
  138.                 case 7:
  139.                 case 8:
  140.                 case 10:
  141.                 case 12:
  142.                     monthCount += 31;
  143.                     break;
  144.                 // 小月份
  145.                 case 4:
  146.                 case 6:
  147.                 case 9:
  148.                 case 11:
  149.                     monthCount += 30;
  150.                     break;
  151.                 // 2月份
  152.                 default:
  153.                     if (isleap) {
  154.                         monthCount += 29;
  155.                     } else {
  156.                         monthCount += 28;
  157.                     }
  158.             }
  159.         }
  160.         // 两部分之和即相距天数
  161.         sumCount = yearCount + monthCount;

  162.         /**
  163.          * 第五步:计算当前月第一天是周几 已知1990年1月1日是周一,根据上一步计算的时间距离求
  164.          */
  165.         int week = (sumCount % 7) + 1;
  166.         /**
  167.          * 第六步:打印当前月日历
  168.          */
  169.         // 打印输入的年月信息
  170.         System.out.println("\t" + year + "年" + month + "月");
  171.         // 打印头部
  172.         System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六");
  173.         // 打印可能的空白
  174.         for (int i = 0; i < week; i++) {
  175.             System.out.print("\t");
  176.         }
  177.         // 打印日历
  178.         for (int i = 1; i <= monthDays; i++) {
  179.             System.out.print(i + "\t");
  180.             if ((i + week) % 7 == 0) {
  181.                 System.out.println();
  182.             }
  183.         }
  184.         System.out.println();
  185.     }
  186. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-8 07:59:52 From FishC Mobile | 显示全部楼层
nzdf 发表于 2021-12-7 23:54
写了个答案可以参考下,但是不建议这样问问题,可以具体说明你是哪里不清楚怎么写

这能创建窗口吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-8 10:10:43 | 显示全部楼层

不明白你说的窗口是啥意思,frame?console?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-8 17:21:17 From FishC Mobile | 显示全部楼层
nzdf 发表于 2021-12-8 10:10
不明白你说的窗口是啥意思,frame?console?

创建主界面,用于实现界面frame
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 22:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表