이번에는 더 구체적으로 시도해 보겠습니다.클래스의 인터페이스 반환 유형을 확인할 수 없습니다.
전체 아이디어 : 경과 인터페이스를 구현하는 날짜 클래스를 생성하는 데 필요한
- .
- 강사가 인터페이스를 제공했으나 여기에 사용자가 잘못 표시했습니다.
- 강사는 도움이되지 않는 여름 수업을 거의 끝냅니다.
반환 형식 날짜를 부여 할 수 있도록 수업 날짜를 가져올 수 없습니다.
인터페이스 코드 :
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를 사용한다. 승인. 나는 정수 d에 대해 입력 된 값을 뒤집을 수 있고 같은 수학을 사용할 수 있기 때문에 subDays를 사용하지 않기로 결정했습니다. 나는 addDays 날짜를 반환하지만 난 그것을 할 또는 어떤 구문을 사용하는 방법을 알아낼 수없는 필요
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
: 같은
그래서 내 수업 날짜가 보인다. 나는 인터페이스가 우리에게 적절하게 주어지지 않은 것처럼 느낀다. 그러나 나는 무엇을 알 수있다.
내 메인에 다음과 같은 것을 사용할 수 있도록 새 날짜를 렌더링하면됩니다. date d2 = d1.addDays (x);
토스트 링에 넣어서 멋지게 만들어야합니다.
이 질문의 의미가 있습니까?
도움 주셔서 감사합니다.
제안 : 되세요 클래스 이름은 대문자로 - 허용 된 규칙이므로 코드를 더 쉽게 읽을 수 있습니다. 예 :'date' 대신에'Date'. –
나는 당신이 올바른 길에 있다고 생각합니다. 그러나'date'는 메소드가 아니라 생성자라는 것을 기억하십시오. '이것을 돌려 놓으십시오. –
@tobias_k 나는 그걸 또한 시도했으나 오류는 다음으로 바뀐다 : 리턴 타입은 경과 된 것과 호환되지 않는다. addDays (int) 오류입니다. 그것은 메소드의 리턴 라인에서 에러를 제거합니다. – Adam