设计并实现Day类

king6065 2012-04-02 12:24:07
在一个程序中设计并实现类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



...全文
189 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
菖蒲老先生 2012-04-02
  • 打赏
  • 举报
回复
粗略的看了下,感觉设计的有点冗余,比如toString()和printDate()功能类似。

我觉得首先beforeDate和nextDate返回值应该改成void,
比如

public void nextDate()// 返回下一天的名称
{
if (d == 7)
d = 1;
else
d += 1;
}


其他实现的方式有很多种,没有谁对谁错,不知道你具体想问什么。
菖蒲老先生 2012-04-02
  • 打赏
  • 举报
回复
应该设置date而不是设置day吧,
我也不知道你想要什么,顺着你的思路改了下。


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());
}
}
king6065 2012-04-02
  • 打赏
  • 举报
回复
我是用INT来实现的 想问怎么用String类型实现 比如直接输出mon tue 之类的

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧