有人能给我指出java数学的正确方向吗?

有人能给我指出java数学的正确方向吗?,java,Java,我正在试图解决一个问题,我必须创建一个程序,该程序将调用一周中的几天,打印出所选日期的前一天和后一天,并返回添加的日期,因此,如果用户选择星期日,该程序将返回星期六作为前一天,星期一作为后一天,以及添加到控制台中的第x天金额。我完全迷路了,我需要任何建议。。。到目前为止,我掌握的代码是: import java.util.Scanner; public final class MurphyW8Day { private int murphingDay; private St

我正在试图解决一个问题,我必须创建一个程序,该程序将调用一周中的几天,打印出所选日期的前一天和后一天,并返回添加的日期,因此,如果用户选择星期日,该程序将返回星期六作为前一天,星期一作为后一天,以及添加到控制台中的第x天金额。我完全迷路了,我需要任何建议。。。到目前为止,我掌握的代码是:

 import java.util.Scanner;

 public final class MurphyW8Day {
    private int murphingDay;
    private String namedDay;

    @Override
    public String toString() {
        return (namedDay);
    }
    public void setDay(int murphingDay) {
        if (murphingDay == 0)
            namedDay = "Sun";
        if (murphingDay == 1)
            namedDay = "Mon";
        if (murphingDay == 2)
            namedDay = "Tue";
        if (murphingDay == 3)
            namedDay = "Wed";
        if (murphingDay == 4)
            namedDay = "Thur";
        if (murphingDay == 5)
            namedDay = "Fri";
        if (murphingDay == 6)
            namedDay = "Sat";
    }
    public MurphyW8Day setNameDay(String murphingDay) {
        murphingDay = namedDay;
        return this;
    }
    public void printDay() {
        System.out.println(namedDay);
    }
    //I believe my issue is somewhere between here :

    public void previousDay() {
        murphingDay = (murphingDay - 1);
        setDay(murphingDay);
        printDay();
    }
    public void nextDay() {
        murphingDay = (murphingDay + 1) % 7;
        setDay(murphingDay);
        printDay();
    }

    //And Here:

    public void calculateDay() {
        int calc;
        int dayAdd;

        Scanner scanner = new Scanner(System. in );
        System.out.println("Enter number of days to add: ");
        calc = scanner.nextInt();

        dayAdd = murphingDay + (calc);

        murphingDay = dayAdd % 7;

        setDay(murphingDay);
        printDay();
    }
    public MurphyW8Day() {
        setDay(0);
    }
    public MurphyW8Day(int murphingDay) {
        setDay(murphingDay);
    }
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("What is your initial day?\nSunday\t\t=\t0\nMonday\t\t=\t1\nTuesday\t\t=\t2\nWednesday\t=\t3\nThursday\t=\t4\nFriday\t\t=\t5\nSaturday\t=\t6");
        System.out.print("Enter the number:");
        Scanner sc = new Scanner(System. in );
        int x = sc.nextInt();
        MurphyW8Day myDay = new MurphyW8Day(x);
        System.out.println("");

        System.out.print("The day of the week is: ");
        myDay.printDay();
        System.out.println();

        System.out.print("The previous day is: ");
        myDay.previousDay();

        System.out.println();

        System.out.print("The next day is: ");
        myDay.nextDay();

        System.out.println();

        myDay.calculateDay();
        System.out.println();
    }
 }
控制台中的输出为:

run:
What is your initial day?
Sunday      =   0
Monday      =   1
Tuesday     =   2
Wednesday   =   3
Thursday    =   4
Friday      =   5
Saturday    =   6
Enter the number:5
The day of the week is: Fri
The previous day is: Fri
The next day is: Sun
Enter number of days to add: 
5
Fri
BUILD SUCCESSFUL (total time: 6 seconds)
我想不出我错过了什么,我要去我的书和甲骨文网站。。。请阐明这一点,我只是想完成这个项目,这样我就可以在学校享受一周的假期。哈哈


提前感谢您提供的任何帮助。

以下是一些建议:

  • 您的类
    MurphyW8Day
    有两个字段,这两个字段在某种意义上是等价的,一个字段可以直接从另一个字段计算出来。我将删除其中一个,并根据需要添加一个计算方法。我的首选是删除
    namedDay
    ,因为从日数计算日名非常简单,事实上,您在
    setDay
    中几乎拥有所需的代码
  • 继(1)之后,您有两个setter方法,
    setDay
    setNamedDay
    。其中一个可以删除,我的建议是删除与(1)中删除的字段对应的字段
  • 最后,确保剩余的setter(例如
    setDay
    )设置类中的字段。目前还没有,我认为这是你们当前问题的主要根源
  • 实际的数学在我看来是正确的


    作为一个旁白,你可能想考虑把计算从输入和打印中分离出来,这样你就可以独立使用它们。

    所以你有这个代码。它实际上在做什么?运行时的控制台输出结果:运行:您最初的一天是什么?星期天=0星期一=1星期二=2星期三=3星期四=4星期五=5星期六=6输入数字:5一周的日期是:星期五前一天是:星期五第二天是:星期日输入要添加的天数:5星期五构建成功(总时间:6秒)您的
    setDay(int)
    方法实际上并没有设置murphingDay?当注释掉时,对于当前、之前和之后的星期几返回null