java课堂作业第八周

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

题目

代码

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();
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值