当我编写稍微复杂一点的程序时,我总是对如何构建程序感到困惑。我想举个例子,不需要修复代码。但是要了解什么是最好或最正确的方法。
示例程序:
现在我想用我的程序做不同的事情(不使用 Java 日期类或 Yoda 时间)。
- 我想检查一年是否是闰年
- 我想检查给定日期是哪一天;
- 我想检查这一天在哪几年是一样的。
- 比较两个日期,并计算月、日等。
为了实现这种功能,有一些事情需要注意:
- 一年是闰年吗
- 哪一天是 1 月 1 日。
- 一年有 52 周还是 53 周?
创建日期时,会创建一个带有日、月和年对象的新数据对象。带有日期,例如 05-11-2002。将创建一个新的 Date 对象,其中包含新的 Year 对象、新的 Month 对象和新的 Day 对象(包含 2012、11、5)。
我创建了一个新的 Date 类,其中包括:
public class Date {
Year year;
Month month;
Day day;
对于我的年级,我只取一个 int 的年份,并检查这一年是否是闰年:
public class Year {
int year;
boolean leapyear;
到目前为止一切顺利,没有真正的大问题。
在我的月份课程中,我只学习 int 月份;
public class Month {
int month;
但是,在我的日间课程中,我需要更多选择。在我的日间课上,我需要一天更多的事情。
- 我需要计算给定一个月、一天和闰年的总天数(是/否)。
- 检查给定年份的 1 月的第一个
- 检查给定日期和年份的日期。
所以我需要来自其他对象的数据,来自我的 Year 和 Month 对象。这是我的第一点示例(找出一年中某一天的数字)。
public class Day {
int day;
int dayTotal;
int januaray1st;
public void daytotal(int m, int d, boolean leapyear) {
int day = 0;
if (m == 0) {
days = 0;
}
if (m == 1) {
days = 31;
}
if (m == 2) {
days = 59;
}
if (m == 3) {
days = 90;
}
if (m == 4) {
days = 120;
}
if (m == 5) {
days = 151;
}
if (m == 6) {
days = 181;
}
if (m == 7) {
days = 212;
}
if (m == 8) {
days = 243;
}
if (m == 9) {
days = 273;
}
if (m == 10) {
days = 304;
}
if (m == 11) {
days = 334;
}
if (leapyear = true && m > 1) {
days += 1;
} else {
days = d + days;
}
this.dayTotal = days;
}
做这个的最好方式是什么?
在这个示例中,我想将leapYear 方法与我的Day 和Year 对象中的变量一起使用。在这种情况下,我通常会遇到问题。通常我会通过反复试验来计算它,但我想知道处理这个问题的最佳方法是什么?
问题 1. 在这种情况下,你的方法最好的方法是什么?我应该制作一个 testDate.java 还是其他方式?