java课堂作业第八周

该博客展示了两个Java程序。第一个程序定义了一个自定义日期类`MyDate`,处理闰年、平年的天数,并能根据毫秒数设置日期。第二个程序包含一个`split`方法,用于按特定字符或字符组合分割字符串。这些代码涉及到日期处理和字符串操作的基础知识。

题目

代码

package ch08;

public class a {
    public static void main(String[] args) {
        MyDate date1 = new MyDate();
        MyDate date2 = new MyDate(2147483648000L);
        MyDate date3 = new MyDate(561555550000L);
        System.out.println(date1.toString());
        System.out.println(date2.toString());
        System.out.println(date3.toString());
    }
}

class MyDate {
    private int year, month, day;
    private long hour,minute,second;
    private String month1,day1,second1,minute1,hour1;
    public MyDate(int y, int m, int d) {
        if (y < 1)
            System.out.println("error year!");
        else if (m < 1 || m > 12)
            System.out.println("error month!");
        else if (d < 1 || d > dayOfMonth(m))
            System.out.println("error day!");
        else {
            year = y;
            month = m;
            day = d;
        }
    }

    //   当前月份对应的天数
    public int dayOfMonth(int month) {
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                return 31;
            case 4:
            case 6:
            case 9:
            case 11:
                return 30;
            case 2:
                if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0))
                    return 29;
                else
                    return 28;
        }
        System.out.println("error month!");
        return -1;
    }

    //    已知年月日,求过去的天数
    public int daysOfDate(MyDate date) {
        int y = date.getYear();
        int m = date.getMonth();
        int d = date.getDay();
        if (y < 1) {
            System.out.println("error year!");
        } else if (m < 1 || m > 12)
            System.out.println("error month!");
        else if (d < 1 || d > dayOfMonth(m))
            System.out.println("error day!");
        else {
            int difdays = 365 * (y - 1) + ((y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400);
            for (int i = 1; i < m; i++)
                difdays += dayOfMonth(i);
            difdays += d;
            return difdays;
        }
        return -1;
    }
    public MyDate() {
        int addDay = 0;
        int leapYearDays = 366;
        int commonYearDays = 365;
        int leftDays = 0;
        int startYear = 1970;
        int sumMonth = 0;
        int i = 1;
        long totalMilliseconds = System.currentTimeMillis();
        int totalDays = (int) ((totalMilliseconds) / 1000 / (3600 * 24)) + 1;
        while (addDay < totalDays) {
            if (totalDays - addDay < 366) {
                while (leftDays < totalDays - addDay) {
                    leftDays += dayOfMonth(i);
                    i++;
                    sumMonth++;
                }
                month = sumMonth % 12;
                day = totalDays - addDay - (leftDays - dayOfMonth(i - 1));
            }
            if ((startYear % 4 == 0 && startYear % 100 != 0) || (startYear % 100 == 0)) {
                addDay += leapYearDays;
                sumMonth += 12;
            } else {
                addDay += commonYearDays;
                sumMonth += 12;
            }
            startYear++;
            year = startYear - 1;
        }
    }

    public MyDate(long totalMilliseconds) {
        int addDay = 0;
        int leapYearDays = 366;
        int commonYearDays = 365;
        int leftDays = 0;
        int startYear = 1970;
        int sumMonth = 0;
        int i = 1;
        int totalDays = (int) ((totalMilliseconds) / 1000 / (3600 * 24)) + 1;
        while (addDay < totalDays) {
            if (totalDays - addDay < 366) {
                while (leftDays < totalDays - addDay) {
                    leftDays += dayOfMonth(i);
                    i++;
                    sumMonth++;
                }
                month = sumMonth % 12;
                day = totalDays - addDay - (leftDays - dayOfMonth(i - 1));
            }
            if ((startYear % 4 == 0 && startYear % 100 != 0) || (startYear % 100 == 0)) {
                addDay += leapYearDays;
                sumMonth += 12;
            } else {
                addDay += commonYearDays;
                sumMonth += 12;
            }
            startYear++;
            year = startYear - 1;
        }
        //System.out.println(totalMilliseconds);
        long totalsecond=totalMilliseconds/1000;
        second=totalsecond%60;
        long totalmintue=totalsecond/60;
        minute=totalmintue%60;
        long totalhour=totalmintue/60;
        hour=totalhour%24;
        //System.out.println(hour+":"+minute+":"+second);
    }

    public void setDate(long totalMilliseconds) {
        int addDay = 0;
        int leapYearDays = 366;
        int commonYearDays = 365;
        int leftDays = 0;
        int startYear = 1970;
        int sumMonth = 0;
        int i = 1;
        int totalDays = (int) ((totalMilliseconds) / 1000 / (3600 * 24)) + 1;
        while (addDay < totalDays) {
            if (totalDays - addDay < 366) {
                while (leftDays < totalDays - addDay) {
                    leftDays += dayOfMonth(i);
                    i++;
                    sumMonth++;
                }
                month = sumMonth % 12;
                day = totalDays - addDay - (leftDays - dayOfMonth(i - 1));
            }
            if ((startYear % 4 == 0 && startYear % 100 != 0) || (startYear % 100 == 0)) {
                addDay += leapYearDays;
                sumMonth += 12;
            } else {
                addDay += commonYearDays;
                sumMonth += 12;
            }
            startYear++;
            year = startYear - 1;
        }
    }

    public boolean equals(MyDate date) {
        int days1 = daysOfDate(this);
        int days2 = daysOfDate(date);
        return (days1 == days2) ? true : false;
    }

    public void setYear(int year) {
        if (year < 1)
            System.out.println("error year!");
        else
            this.year = year;
    }

    public int getYear() {
        return this.year;
    }

    public void setMonth(int month) {
        if (month < 1 || month > 12) System.out.println("error month!");
        else this.month = month;
    }

    public int getMonth() {
        return this.month;
    }

    public void setDay(int day) {
        if (day < 1 || day > dayOfMonth(month)) System.out.println("error day!");
        else this.day = day;
    }

    public int getDay() {
        return this.day;
    }

    public void before(int d) {
        if (day + d <= dayOfMonth(month)) day += d;
        else {
            d -= (dayOfMonth(month) - day) + 1;
            day = 1;
            if (month + 1 <= 12) month++;
            else {
                year++;
                month = 1;
            }
            before(d);
        }
    }

    public void after(int d) {
        if (day - d > 0) day -= d;
        else {
            d -= day;
            if (month - 1 > 0) month--;
            else {
                year--;
                month = 12;
            }
            day = dayOfMonth(month);
            after(d);
        }
    }

    public void set(int year, int month, int day) {
        setYear(year);
        setMonth(month);
        setDay(day);
    }

    public String toString() {
        //System.out.println(hour);
        //String month1;
        //return year + "-" + month + "-" + day;
        if (month==1)
            month1="Jan";
        if (month==2)
            month1="Feb";
        if (month==3)
            month1="Mar";
        if (month==4)
            month1="Apr";
        if (month==5)
            month1="May";
        if (month==6)
            month1="Jun";
        if (month==7)
            month1="Jun";
        if (month==8)
            month1="Jul";
        if (month==9)
            month1="Sep";
        if (month==10)
            month1="Oct";
        if (month==11)
            month1="Nov";
        if (month==12)
            month1="Dec";


        if(day%1==0)
            day1="Tue";
        if(day%2==0)
            day1="Wed";
        if(day%3==0)
            day1="Thu";
        if(day%4==0)
            day1="Fri";
        if(day%5==0)
            day1="Sat";
        if(day%6==0)
            day1="Sun";
        if(second<10)
            second1="0"+second;
        else
            second1=Long.toString(second);
        if(minute<10)
            minute1="0"+minute;
        else
            minute1=Long.toString(minute);
        if(hour<10)
            hour1="0"+hour;
        else
            hour1=Long.toString(hour);
        return day1+" "+month1+" "+(hour+8)+":"+minute1+":"+second1+" CST "+year;
    }
}

package ch08;
import java.util.Arrays;

public class b {
    public static void main(String[] args) {
        String[] s1 = split("ab#12#453#", "#");
        String[] s2 = split("#ab#12#453#", "[#]");
        //String[] s3 = split("###", "[#]");
        String[] s4 = split("ab?#12?453#?", "[?#]");
        printArray(s1);
        printArray(s2);
        //printArray(s3);
        printArray(s4);
    }

    public static String[] split(String s, String regex) {
        String[] newStringArray = new String[s.length()-1];
        int i = 0;
        int j = 0;
        while(i < s.length()){
            if(s.substring(i, i+1).matches(regex)) {
                if(i != 0) {
                    newStringArray[j] = s.substring(0, i);
                    j++;
                }
                newStringArray[j] = s.substring(i, i+1);
                j++;
                s=s.substring(i+1);
            } else
                i++;
        }
        newStringArray[j] = s;
        String[] trimedStringArray = new String[j+1];
        for(int n=0; n<trimedStringArray.length; n++) {
            if(newStringArray[n] != null)
                trimedStringArray[n] = newStringArray[n];
        }
        return trimedStringArray;
    }

    public static void printArray(String[] array) {
        for(int i=0; i<array.length; i++)
            System.out.print(array[i] + " ");
        System.out.println();
    }

}

 

需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕需求响应动态冰蓄冷系统及其优化策略展开研究,结合Matlab代码实现,探讨了在电力需求侧管理背景下,冰蓄冷系统如何通过优化运行策略参与需求响应,以实现削峰填谷、降低用电成本和提升能源利用效率的目标。研究内容包括系统建模、负荷预测、优化算法设计(如智能优化算法)以及多场景仿真验证,重点分析不同需求响应机制下系统的经济性和运行特性,并通过Matlab编程实现模型求解与结果可视化,为实际工程应用提供理论支持和技术路径。; 适合人群:具备一定电力系统、能源工程或自动化背景的研究生、科研人员及从事综合能源系统优化工作的工程师;熟悉Matlab编程且对需求响应、储能优化等领域感兴趣的技术人员。; 使用场景及目标:①用于高校科研中关于冰蓄冷系统与需求响应协同优化的课题研究;②支撑企业开展楼宇能源管理系统、智慧园区调度平台的设计与仿真;③为政策制定者评估需求响应措施的有效性提供量化分析工具。; 阅读建议:建议读者结合文中Matlab代码逐段理解模型构建与算法实现过程,重点关注目标函数设定、约束条件处理及优化结果分析部分,同时可拓展应用其他智能算法进行对比实验,加深对系统优化机制的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值