在一个程序中设计并实现类Day,来表示一周的某一天。该类应储存日期的名称,如Sun代表星期天。该程序需要在Day类对象上实现下面的操作:
a,设置日期
b,输出日期
c, 返回日期的名称
d, 返回下一天的名称
e, 返回前一天的名称
f, 给当前日期加上一些天数,并返回。例如,如果当前日期就是星期一,加4天就应返回星期五。同样,如果当前日期是星期二,加13天就应返回星期一
g,添加合适的构造函数
h,编写方法的定义,实现a-g中的Day类操作
i,编写一个程序,测试类Day的各种操作
本人写的
public class Day
{
int d;
public Day()
{
d = 1;
}
public Day(int i)
{
if (i >= 1 && i <= 7)
d = i;
else
return;
}
public void setDate(int i)//设置日期
{
d = i;
}
public void printDate()//输出日期
{
System.out.println("星期" + d);
}
public int getDate()//返回时期名称
{
return d;
}
public int nextDate()//返回下一天的名称
{
if (d == 7)
return 1;
else
return d + 1;
}
public int beforeDate()//返回前一天的名称
{
if (d == 1)
return 7;
else
return d - 1;
}
public void addSomeDate(int i)//I天后星期几
{
System.out.println("今天是星期"+d+","+i+"天后是星期"+((d + i) % 7));
}
public String toString()
{
return("星期"+d);
}
}
求完美的源代码或者方法。初学求指教
另外本题出自 国外计算机科学经典教材:数据结构——Java版(Data structures using java)
如果哪位大大有这本书的相关练习源代码请发给我 万分感谢!!
415561158@qq.com
------解决方案--------------------------------------------------------
应该设置date而不是设置day吧,
我也不知道你想要什么,顺着你的思路改了下。
- Java code
class Day { int d; public Day() { d = 1; } public Day(int i) { if (i >= 1 && i <= 7) d = i; else return; } public void setDate(int i) { d = i; } public Day getDate() { return new Day(d); } public void nextDate() { addSomeDate(1); } public void beforeDate() { addSomeDate(-1); } public void addSomeDate(int i) { d = (d + i) % 7; } public String toString() { String week = ""; switch (d) { case 1: week = "Mon"; break; case 2: week = "Tue"; break; case 3: week = "Wen"; break; case 4: week = "Thu"; break; case 5: week = "Fri"; break; case 6: week = "Sat"; break; default: week = "Sun"; break; } return week; }}public class TestDay { public static void main(String[] args) { // a,设置日期 Day day = new Day(); day = new Day(2); // b,输出日期 // c, 返回日期的名称 System.out.println(day.getDate()); // d, 返回下一天的名称 day.nextDate(); System.out.println(day.getDate()); // e, 返回前一天的名称 day.beforeDate(); System.out.println(day.getDate()); // f, 给当前日期加上一些天数,并返回。 day.addSomeDate(3); System.out.println(day.getDate()); }}