Java:设计并实现在程序中实现星期几的课程日
这个问题我已经被问过好几次了,但没有一个能解决我的具体问题。我觉得我真的很快就要完成了。我会把整个问题和我的代码贴在下面。我遇到的问题是,当我选择星期天,这是一周的第一天作为我的开始日,它不知道如何回到星期六,这是前一周。另外,天数的增加似乎也不正常。寻找一些关于如何使其工作的提示。代码编译并运行,只是我的代码没有达到我想要的效果。问题是,当我使用代码的test选项时,一切似乎都正常工作,我就是无法让它与用户输入的数据一起工作 完整的问题是:设计并实现在程序中实现星期几的上课日。上课日应存储当天,如周日的太阳。程序应能够对Day类型的对象执行以下操作: 确定日期 B.打印日期 C.当天返回 第二天回来 E.前一天返回 F.通过将某些天添加到当前天来计算并返回该天。例如,如果当前日期是星期一,我们加上四天,则返回的日期是星期五。同样,如果今天是星期二,加上13天,返回的日期是星期一 G.添加适当的构造函数 H.编写方法的定义,以实现从A到G中定义的上课日操作 I.编写一个程序,在上课日测试各种操作 代码:Java:设计并实现在程序中实现星期几的课程日,java,Java,这个问题我已经被问过好几次了,但没有一个能解决我的具体问题。我觉得我真的很快就要完成了。我会把整个问题和我的代码贴在下面。我遇到的问题是,当我选择星期天,这是一周的第一天作为我的开始日,它不知道如何回到星期六,这是前一周。另外,天数的增加似乎也不正常。寻找一些关于如何使其工作的提示。代码编译并运行,只是我的代码没有达到我想要的效果。问题是,当我使用代码的test选项时,一切似乎都正常工作,我就是无法让它与用户输入的数据一起工作 完整的问题是:设计并实现在程序中实现星期几的上课日。上课日应存储当天
import java.util.*;
public class Day
{
private static final int SUNDAY = 0;
private static final int MONDAY = 1;
private static final int TUESDAY = 2;
private static final int WEDNESDAY = 3;
private static final int THURSDAY = 4;
private static final int FRIDAY = 5;
private static final int SATURDAY = 6;
static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args)
{
Day dy = new Day(Day.WEDNESDAY);
int choice;
do
{
System.out.println("Welcome, to my final project please select
an option.\n");
menu2();
choice = keyboard.nextInt();
System.out.println();
switch (choice)
{
case 1:
do
{
menu1();
choice = keyboard.nextInt();
System.out.println();
switch (choice)
{
case 1:
day = SUNDAY;
break;
case 2:
day = MONDAY;
break;
case 3:
day = TUESDAY;
break;
case 4:
day = WEDNESDAY;
break;
case 5:
day = THURSDAY;
break;
case 6:
day = FRIDAY;
break;
case 7:
day = SATURDAY;
break;
case 99:
System.exit(0);
break;
default:
System.out.println("Invalid Input");
}
System.out.print("The day you selected as your starting
day is: ");
dy.print();
System.out.println();
System.out.print("The next day to your selected day is: ");
dy.setDay(dy.getNextDay());
dy.print();
System.out.println();
System.out.print("The previous day to your selected
day is: ");
dy.setDay(dy.getPreviousDay());
dy.setDay(dy.getPreviousDay());
dy.print();
System.out.println();
System.out.print("How many days would you like to add? ");
int days = keyboard.nextInt();
dy.setDay(days);
System.out.print("\nAdding " + days + " day(s) makes your
new day: ");
dy.print();
System.out.println();
}
while (choice != 99);
break;
case 2:
System.out.println("Test Data For Day Class");
System.out.print("\nInitial day: ");
dy = new Day(Day.SUNDAY);
dy.print();
System.out.print("\nNext day: ");
dy.setDay(dy.getNextDay());
dy.print();
System.out.print("\nAdd 12 Days: ");
dy.setDay(dy.addDays(12));
dy.print();
System.out.print("\nPrevious day: ");
dy.setDay(dy.getPreviousDay());
dy.print();
System.out.print("\nAdd 3 days: ");
dy.setDay(dy.addDays(3));
dy.print();
System.out.println("\n\n");
break;
case 99:
System.exit(0);
break;
default:
System.out.println("Invalid Input");
}
}
while (choice != 99);
}
public static void menu1()
{
System.out.println("Please Select Your Initial Day (or 99 to quit):");
System.out.println(" 1: Sunday.");
System.out.println(" 2: Monday.");
System.out.println(" 3: Tuesday.");
System.out.println(" 4: Wednesday.");
System.out.println(" 5: Thursday.");
System.out.println(" 6: Friday.");
System.out.println(" 7: Saturday.");
System.out.println("99: To quit the program.");
}
public static void menu2()
{
System.out.println("Enter: ");
System.out.println("1: To Enter Data into the program.");
System.out.println("2: For Test Data.");
System.out.println("99: To quit the program.");
}
//Stores the day
public static int day;
//Set the day.
public void setDay(int day)
{
this.day = day;
}
//Print the day
public void print()
{
System.out.println(this.toString());
}
//Return the day.
public int getDay()
{
return day;
}
//Return the next day.
public int getNextDay() {
return (day + 1) % 7;
}
@Override
public String toString() {
switch (Day.day) {
case SUNDAY:
return "Sunday";
case MONDAY:
return "Monday";
case TUESDAY:
return "Tuesday";
case WEDNESDAY:
return "Wednesday";
case THURSDAY:
return "Thursday";
case FRIDAY:
return "Friday";
case SATURDAY:
return "Saturday";
}
return "";
}
//Return the previous day.
public int getPreviousDay()
{
if (day = 0)
return (day + 6) % 7;
else
return (day - 1) % 7;
}
//Calculate and return the day by adding days
public int addDays(int days)
{
return (day + days) % 7;
}
//Add the constructors.
public Day()
{
this.day = SUNDAY;
}
public Day(int day)
{
this.day = day;
}
}
当我选择星期天,这是一周的第一天作为我的开始日,它不知道如何回到星期六。想一想:前一天在所有情况下都是today-1,除了today=sunday,所以sunday是一个例外情况,您可以为它编写特定的代码。。。ifday=Day.SUNDAY{//some code}else{//some other code}MarsAtomic-现在下班开车回家,但我读了你的评论,将花30-40分钟的车程考虑你的建议。希望我能给出答案,谢谢你的回答。我真的给了你答案。。。你所需要做的就是实现它。从你的回答中,我能想到的唯一一件事是,也许我应该加上6天,而不是减去1?@mstbaum如果是周日,他当前的实现返回-1。