我的代码要求用户输入具有整数值的日期,即星期日= 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);
}
}
我的最后一个问题是,如何使用枚举实现此功能?有什么想法吗?
答案 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));
}
}