首页 > 其他分享 >ChatGPT4实现前一天

ChatGPT4实现前一天

时间:2023-04-08 17:22:42浏览次数:42  
标签:return prevMonth 实现 31 ChatGPT4 month year day 前一天

目录

软件测试作业,用ChatGPT4来帮个小忙,小划水,勿喷勿喷,近期有相关作业的同学看到我的文章,建议修改一下,别撞车了,哈哈哈~

提出需求

个人输入需求: Java实现键盘输入日期 输出前一天,需要考虑润年和非润年,2月是否有29号,大月小月的区分等细节处理,不符合的有对应提示,不使用java包里的封装好的类

ChatGPT4分析出的语义:实现了输入日期输出前一天,并且考虑了闰年和非闰年、2月的天数、大月和小月等细节处理。如果输入的日期格式不正确,会有对应的提示。

代码实现

import java.util.Scanner;

public class TheDayBefore {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个日期(格式:yyyy-MM-dd):");
        String inputString = scanner.nextLine();
        String[] inputArray = inputString.split("-");
        int year, month, day;
        if (inputArray.length == 3) {
            try {
                year = Integer.parseInt(inputArray[0]);
                month = Integer.parseInt(inputArray[1]);
                day = Integer.parseInt(inputArray[2]);
            } catch (NumberFormatException e) {
                System.out.println("日期格式不正确!");
                return;
            }
            if (month < 1 || month > 12) {
                System.out.println("月份不正确!");
                return;
            }
            if (day < 1 || day > 31) {
                System.out.println("日期不正确!");
                return;
            }
            if ((day == 31 && (month == 4 || month == 6 || month == 9 || month == 11)) ||
                    (day >= 30 && month == 2) ||
                    (day == 29 && month == 2 && !isLeapYear(year)) ||
                    (year < 0)) {
                System.out.println("日期不正确!");
                return;
            }
            int prevYear = year;
            int prevMonth = month;
            int prevDay = day - 1;
            if (prevDay == 0) {
                prevMonth--;
                if (prevMonth == 0) {
                    prevYear--;
                    prevMonth = 12;
                }
                if (prevMonth == 2) {
                    if (isLeapYear(prevYear)) {
                        prevDay = 29;
                    } else {
                        prevDay = 28;
                    }
                } else {
                    if (prevMonth == 4 || prevMonth == 6 || prevMonth == 9 || prevMonth == 11) {
                        prevDay = 30;
                    } else {
                        prevDay = 31;
                    }
                }
            }
            System.out.println("前一天是:" + prevYear + "-" + formatMonth(prevMonth) + "-" + formatDay(prevDay));
        } else {
            System.out.println("日期格式不正确!");
        }
    }

    private static boolean isLeapYear(int year) {
        return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
    }

    private static String formatMonth(int month) {
        if (month < 10) {
            return "0" + month;
        } else {
            return String.valueOf(month);
        }
    }

    private static String formatDay(int day) {
        if (day < 10) {
            return "0" + day;
        } else {
            return String.valueOf(day);
        }
    }

}

需求分析

过于划水,不太行,还是得简单分析一下需求叭,哈哈哈~

  1. 首先将目标定义为java,从年开始划分,判断输入的年是否为闰年:为闰年则对于二月这个特殊月,闰年为29天,平年为28天。例如输入2023-02-28是正确的,因为2023年为平年。
  2. 输入的月份月大还是月小,若是月大则除去二月以外,月大有31天,月小有30天。例如输入2023-04-01,前一天month=month-1,day=31。
  3. 输入的月是否为三月,若是三月例如2023-03-01(平年)前一天month = month-1;润年类似。
  4. 输入的月份是否是1月,例如2023-01-01则前一天为2022-12-31
    及year = year - 1,month = 12,day = 31。

单元测试

1.测试输入的月份月大还是月小。

2.判断输入的年是否为闰年和输入的月是否为三月。

3.输入的月份是否是1月。

等价类划分

M1={月份:4、6、9、11}

M2={月份:1、3、5、7、8、10、12}

M3={月份:2}

D1={日期:1}

D2={日期:2<=日期<=27}

D3={日期:28}

D4={日期:29}

D5={日期:30}

D6={日期:31}

Y1={年:是闰年}

Y2={年:不是闰年}

决策表

1 2 3 4 5 6 7 8 9 10 11
月份在 M2 M3 M3 M2 M1 M1 M3 M2 M1 M4 M4
日期在 D1 D4 D3 D1 D1 D1 D1 D2-D6 D2-D5 D1 D1
年份在 Y1 Y2 Y1 Y2
year-1
moth-1
day-1
year复位12
moth复位12
day复位31
day复位30
day复位28
day复位29

标签:return,prevMonth,实现,31,ChatGPT4,month,year,day,前一天
From: https://www.cnblogs.com/MrDevil-k/p/17298848.html

相关文章

  • 使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo
    使用ChatGPT快速实现灰度和RGBA图片转换为RGB三通道图片的Python数据清洗demo任务需求Imganet数据集,由于原始图片有灰度图片、彩色图片和RGBA图片,我们的要求是将灰度图片和RGBA图片通过Image.open(img_path+img_name).convert('RGB')转换为RGB三通道图片重新保存起来。要求点......
  • jQuery代码实现购物车效果
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=d......
  • 【NARX回归预测】基于NARX结合RNN实现光伏数据回归预测附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 【生产调度】基于和声搜索算法实现并行机器调度附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 带头节点的单链表的思路及代码实现
    带头节点的单链表的思路及代码实现(JAVA)一、什么是的单链表①标准定义单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象)+指针(指示后继元素存储位置,元素就是存储数据的存储单......
  • JAVA实现单链表修改和删除数据节点
    JAVA实现单链表修改和删除数据节点一、修改单链表中的一个节点①实现思路因为带头节点的链表中头节点的next域不能发生改变(始终指向单链表的头节点),否则将找不到该链表。所以我们需要先找一个辅助节点temp来进行节点代理操作。通过遍历链表,使辅助节点temp后移,找到要修改的节点......
  • 使用Golang实现Nginx代理功能
    由于业务需要实现对多个web应用做同域二级目录代理,用NGINX的又感觉太重了,而且不好做配置页面,用golang来实现代理功能支持正则表达式匹配机制支持多应用多级目录代理。支持应用子路由代理支持webapi代理支持websocket代理支持禁用缓存设置支持http、https混合使用支持/dir......
  • 使用 MQTT 实现前端消息传递
    MQTT是一种轻量级的消息传递协议,广泛应用于物联网和分布式系统中。在前端应用中使用MQTT可以实现实时消息传递和数据同步。本文将介绍如何使用MQTT在前端应用中实现消息传递。安装MQTT.js要使用MQTT,在前端应用中,需要安装MQTT.js。在终端中执行以下命令:npminstallmq......
  • 1.实现语言客户端
    笔记软件在2023/4/614:01:04推送该笔记LanguageClient"activationEvents":["onLanguage:plaintext"]这个部分告诉VSCode只要打开纯文本文件之后就立刻激活插件(例如:打开一个.txt​文件)"configuration":{"type":"object","title"......
  • 2.实现语言服务端
    笔记软件在2023/4/614:01:06推送该笔记LanguageServer这个语言服务器的源码在/server中。比较重要的pacakge.json部分是"dependencies":{"vscode-languageserver":"^6.1.1","vscode-languageserver-textdocument":"^1.0.1"}下面是一个服务器的......