题目
代码
一
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();
}
}