日期:2014-05-20  浏览次数:20904 次

设计并实现Day类
在一个程序中设计并实现类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());
    }
}