使用枚举查找星期几

时间:2014-04-27 23:13:20

标签: java enumeration

我的代码要求用户输入具有整数值的日期,即星期日= 0,星期一= 1等,然后要求用户输入表示偏移日的数字。从那里程序找到对应于偏移号的那天,即

Enter today's day: 0 //Sunday
Enter the number of days elapsed since today: 6
6 days from Sunday is Sunday

上述输出的问题在于,由于我正在使用“%6”来查找偏移日,因此它会跳过一天的值6。

另外,我无法找到输入负偏移值的日期。即

Enter today's day: 0 //Sunday
Enter the number of days elapsed since today: -2
-2 days from Sunday is Friday

这是我的代码

import java.util.Scanner ;

public class test {

public static void main (String[] args) {

Scanner Input = new Scanner(System.in);
    System.out.print("Enter today's day: ");
        int today = Input.nextInt();

System.out.print("Enter the number of days elapsed since today: ");
    int offset = Input.nextInt ();
        int offsetDay = 0;
        if (offset >= 0)
            offsetDay = (today + offset)% 6 ; //to get remainder and make it vary from 0 - 6            
        else if (offset < 0)
            offsetDay = (today - offset)% 6 ;


String todayText = null ;
String offsetText = null;

//Converting input integers into days in text for variable today
switch (today) {
    case 0 : todayText = "Sunday" ; break;
    case 1 : todayText = "Monday"; break;
    case 2 : todayText = "Tuesday"; break;
    case 3 : todayText = "Wednesday";break;
    case 4 : todayText = "Thrusday"; break;
    case 5 : todayText = "Friday"; break;
    case 6 : todayText = "Saturday"; break;
}

//Converting input integers into days in text for variable offset
switch (offsetDay) {
    case 0 : offsetText = "Sunday" ; break;
    case 1 : offsetText = "Monday"; break;
    case 2 : offsetText = "Tuesday"; break;
    case 3 : offsetText = "Wednesday";break;
    case 4 : offsetText = "Thrusday"; break;
    case 5 : offsetText = "Friday"; break;
    case 6 : offsetText = "Saturday"; break;
}

System.out.println(offset + " days from " + todayText + " is "  + offsetText);

}

}

我的最后一个问题是,如何使用枚举实现此功能?有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您应使用%7代替%6,因为0-6(包括0和7)的计数为7。

答案 1 :(得分:0)

请尝试使用此代码段,也许这会对您有所帮助:

public class Days
{

    enum DAY
    {
        MON("Monday"),
        TUE("Tuesday"),
        WED("Wednesday"),
        THU("Thursday"),
        FRI("Friday"),
        SAT("Saturday"),
        SUN("Sunday");

        private String name;

        private DAY(String name)
        {
            this.name= name;
        }

        @Override
        public String toString()
        {
            return this.name;
        }

        public DAY add(int days)
        {
            int posMod = (this.ordinal() + days) % values().length;
            if (posMod < 0)
            {
                posMod += values().length;
            }
            return DAY.values()[posMod];
        }
    }

    public static void main(String[] args)
    {
        DAY a = DAY.values()[0];
        System.out.println(a);
        System.out.println(a.add(-2));
        System.out.println(a.add(0));
        System.out.println(a.add(-8));
    }

}