ChatGPT4实现前一天

简介: ChatGPT4实现前一天

软件测试作业,用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={年:不是闰年}

决策表

image.png

目录
相关文章
|
3月前
|
C# 开发者
这件事情我整整坚持了一年零一个月!
这件事情我整整坚持了一年零一个月!
|
7月前
|
关系型数据库 MySQL
MySQL查询当天昨天明天本月上月今年等数据
MySQL查询当天昨天明天本月上月今年等数据
51 2
|
人工智能 智能硬件
如何在一周内摸清一个行业:ChatGPT + 麦肯锡关键词分析法
如何在一周内摸清一个行业:ChatGPT + 麦肯锡关键词分析法
1789 0
如何在一周内摸清一个行业:ChatGPT + 麦肯锡关键词分析法
|
人工智能 异构计算
让ChatGPT来写今年的高考作文,能得几分?
使用最新的ChatGPT4模型,做2023年全国甲卷的高考作文
139 0
|
程序员
766.每周复盘-第十一周
766.每周复盘-第十一周
LeetCode 训练场:1450. 在既定时间做作业的学生人数
LeetCode 训练场:1450. 在既定时间做作业的学生人数
120 0
LeetCode 训练场:1450. 在既定时间做作业的学生人数
|
数据采集 机器学习/深度学习 人工智能
MIT发布首个贝叶斯「数据清洗」机器人!8小时洗200万条数据
吴恩达说AI模型里百分之八十的工作要放在数据上,而数据清洗又是保证模型质量的关键步骤,它涉及到领域知识等等,往往很难自动化,MIT最近发布了一个自动数据清洗机器人,有望摆脱手工清洗数据!
333 0
MIT发布首个贝叶斯「数据清洗」机器人!8小时洗200万条数据
|
机器学习/深度学习 人工智能 智能设计
年前一天100张海报逼走设计师!AI:我还能再打200个!
年前一天100张海报逼走设计师!AI:我还能再打200个!
239 0
|
机器学习/深度学习 存储 人工智能
大招or刷榜?OpenAI耗资8500万、1750亿参数炼出的GPT-3,它真的不香吗?!
大招or刷榜?OpenAI耗资8500万、1750亿参数炼出的GPT-3,它真的不香吗?!
481 0
|
机器学习/深度学习 人工智能 测试技术
AI文案通过图灵测试!一秒生成2万条广告神器问世
6月20日,有着广告界奥斯卡之称的戛纳国际创意节上出现了阿里妈妈一款AI智能文案生成神器,它可以根据商品自动生成文案,并且文案品质与人写文案已经并无二致。
6463 0