Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:设计并实现在程序中实现星期几的课程日_Java - Fatal编程技术网

Java:设计并实现在程序中实现星期几的课程日

Java:设计并实现在程序中实现星期几的课程日,java,Java,这个问题我已经被问过好几次了,但没有一个能解决我的具体问题。我觉得我真的很快就要完成了。我会把整个问题和我的代码贴在下面。我遇到的问题是,当我选择星期天,这是一周的第一天作为我的开始日,它不知道如何回到星期六,这是前一周。另外,天数的增加似乎也不正常。寻找一些关于如何使其工作的提示。代码编译并运行,只是我的代码没有达到我想要的效果。问题是,当我使用代码的test选项时,一切似乎都正常工作,我就是无法让它与用户输入的数据一起工作 完整的问题是:设计并实现在程序中实现星期几的上课日。上课日应存储当天

这个问题我已经被问过好几次了,但没有一个能解决我的具体问题。我觉得我真的很快就要完成了。我会把整个问题和我的代码贴在下面。我遇到的问题是,当我选择星期天,这是一周的第一天作为我的开始日,它不知道如何回到星期六,这是前一周。另外,天数的增加似乎也不正常。寻找一些关于如何使其工作的提示。代码编译并运行,只是我的代码没有达到我想要的效果。问题是,当我使用代码的test选项时,一切似乎都正常工作,我就是无法让它与用户输入的数据一起工作

完整的问题是:设计并实现在程序中实现星期几的上课日。上课日应存储当天,如周日的太阳。程序应能够对Day类型的对象执行以下操作:

确定日期

B.打印日期

C.当天返回

第二天回来

E.前一天返回

F.通过将某些天添加到当前天来计算并返回该天。例如,如果当前日期是星期一,我们加上四天,则返回的日期是星期五。同样,如果今天是星期二,加上13天,返回的日期是星期一

G.添加适当的构造函数

H.编写方法的定义,以实现从A到G中定义的上课日操作

I.编写一个程序,在上课日测试各种操作

代码:

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。