Java 无法解析类中的接口返回类型

Java 无法解析类中的接口返回类型,java,interface,Java,Interface,这一次,我将尝试更具体一些 总体思路: 需要创建一个日期类,该类实现 界面 界面由讲师提供,但此处的用户将其标记为不正确。 老师对帮助不感兴趣,暑期班快结束了。 我无法获取课程日期以允许我提供返回类型日期 接口代码: public interface elapsed { /* * a year can have 365 or 366 days * depending on "leap-year". * February can have 28 or 29 days * also de

这一次,我将尝试更具体一些

总体思路:

需要创建一个日期类,该类实现 界面 界面由讲师提供,但此处的用户将其标记为不正确。 老师对帮助不感兴趣,暑期班快结束了。 我无法获取课程日期以允许我提供返回类型日期

接口代码:

public interface elapsed 
{
/* 
 * a year can have 365 or 366 days
 * depending on "leap-year".
 * February can have 28 or 29 days
 * also depending on "leap-year"
 */

public static final int days_week = 7;
public static final int weeks_year = 52;

//add any number of days to a date
public date addDays (int d);

//subtract any number of days from a day
public date subDays (int d);

}
所以类日期必须使用subDays和addDays。好啊我决定不使用subDays,因为我可以翻转为整数d输入的任何值,并使用相同的数学

所以我的上课日期看起来像:

public class date implements elapsed
{

int day;
int month;
int year;

public date (int Day, int Month, int Year)
{
    day = Day;
    month = Month;
    year = Year;
}

public date ()
{

}

public int getDay()
{
    return day;
}

public int getMonth()
{
    return month;
}

public int getYear()
{
    return year;
}

public date addDays (int x)
{
    int d = getDay();
    int m = getMonth();
    int y = getYear();

    m = (m + 9) % 12;
    y = y - (m / 10);
    int g = (365 * y) + (y / 4) - (y / 100) + (y / 400) + (( m * 306 + 5) / 10) + ( d - 1 );

    g = g + x; //adds days to the g variable which is the date from clock start

    y = (10000 * g + 14780)/3652425;
    int ddd = g - (365 * y + y / 4 - y / 100 + y / 400);

    if (ddd < 0) //manages the occurrences of leap years
    {
         y = y - 1;
         ddd = g - (365*y + y/4 - y/100 + y/400);
    }

    int mi = (100 * ddd + 52) / 3060;
    int mm = (mi + 2) % 12 + 1;
    y = y + (mi + 2) / 12;
    int dd = ddd - (mi * 306 + 5) / 10 + 1;

    return new date(dd, mm, y);
}

public date subDays (int x)
{
    int d = getDay();
    int m = getMonth();
    int y = getYear();

    m = (m + 9) % 12;
    y = y - (m / 10);
    int g = (365 * y) + (y / 4) - (y / 100) + (y / 400) + (( m * 306 + 5) / 10) + ( d - 1 );

    g = g - x; //subtracts days to the g variable which is the date from clock start

    y = (10000 * g + 14780)/3652425;
    int ddd = g - (365 * y + y / 4 - y / 100 + y / 400);

    if (ddd < 0) //manages the occurrences of leap years
    {
         y = y - 1;
         ddd = g - (365*y + y/4 - y/100 + y/400);
    }

    int mi = (100 * ddd + 52) / 3060;
    int mm = (mi + 2) % 12 + 1;
    y = y + (mi + 2) / 12;
    int dd = ddd - (mi * 306 + 5) / 10 + 1;

    return new date(dd, mm, y);     
}

public String toString(int day, int month, int year) // formats the date into something nicer
{
    String formMonth = null;

    switch(month)
    {
    case 1:
        formMonth = "Jan";
        break;
    case 2:
        formMonth = "Feb";
        break;
    case 3:
        formMonth = "Mar";
        break;  
    case 4:
        formMonth = "Apr";
        break;
    case 5:
        formMonth = "May";
        break;
    case 6:
        formMonth = "Jun";
        break;
    case 7:
        formMonth = "Jul";
        break;
    case 8:
        formMonth = "Aug";
        break;
    case 9:
        formMonth = "Sep";
        break;
    case 10:
        formMonth = "Oct";
        break;
    case 11:
        formMonth = "Nov";
        break;
    case 12:
        formMonth = "Dec";
        break;
    default:
        System.exit(0);
    }
    String formDate = day + formMonth + year;
    return formDate;
}

} //class end brackets
我需要addDays来返回一个日期,但我不知道如何做,或者使用什么语法。我觉得界面没有正确地提供给我们,但我知道什么

我只需要它来呈现一个新的日期,这样在我的主要功能中,我就可以使用 日期d2=d1.addDaysx

我把它放进我必须建造的tostring中,使它看起来很漂亮

这个问题更有意义吗


谢谢你的帮助。

我不是100%确定你在问什么,所以这更像是胡乱猜测,但我有点自信

在addDays方法中,您希望创建并返回一个新日期。您可以通过从当前日期获取数据并将给定的天数添加到这些值中,然后调用日期构造函数来返回新实例。到目前为止,你在正确的轨道上!唯一的问题似乎是,构造函数不是像这样调用的实例的方法。date…,而是必须像new date


如果您只希望addDays返回日期,则只需执行以下操作:

public date addDays(int x)
{
    return new date(dd,mm,yy);
} 


建议:将类名大写-这是公认的惯例,将使阅读代码更容易。约会而不是约会。我认为你走对了方向。但请记住,date不是一个方法,而是一个构造函数。尝试替换并返回此。datedd,mm,y;返回新日期日期为年月日@tobias_k我也尝试过,但错误切换为:return类型与appeased.addDaysint错误不兼容。不过,它确实清除了方法返回行上的错误。这次将尝试更具体一些…这个问题更有意义吗?这仅仅是对你先前问题的改写吗?如果是的话,你应该删除这个问题,并用改进的方法编辑那个问题。@Adam无法重现。当我这样做时,代码除了缺少的子天之外,不会显示更多的错误
public date addDays(int x)
{
    return new date(dd,mm,yy);
} 
public String toString()
{

}