Как получить правильную функцию isLeapYear в моем классе даты без абстракции? (Ява)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как получить правильную функцию isLeapYear в моем классе даты без абстракции? (Ява)

Сообщение Anonymous »

Здравствуйте, я работаю над домашним заданием, и задание состоит в том, чтобы создать класс дат, в котором григорианская дата и юлианские даты будут подклассами. Я пытаюсь написать правильную функцию isLeapYear(), поскольку оба календаря по-разному рассчитывают високосный год. Этот код не запускается, поскольку параметр в инструкции return, вызывающей функцию високосного года, не требует параметра, хотя он вызывает открытый класс, которому требуется параметр. Если кто-нибудь может показать мне правильный способ сделать это без использования абстракции (потому что мы еще не рассмотрели это), я буду рад признательности. Не стесняйтесь помочь исправить что-нибудь еще, пока вы этим занимаетесь, лол
Date.java

Код: Выделить всё

public class Date {
private int year;
private int day;
private int month;

Date(){

}

Date(int year, int day, int month){
this.year = year;
this.month = month;
this.day = day;
}

public int getYear(){
return this.year;
}

public int getMonth(){
return this.month;
}

public int getDayOfMonth() {
return this.day;
}

public String getMonthName(){
return getMonthName(month);
}

public void printShortDate(){
System.out.println(month + "/" + day + "/" + year);
}

public void printLongDate(){
System.out.println(getMonthName(month - 1) + " " + day + ", " + year);
}

#code that wont work
public boolean isLeapYear(){
return isLeapYear(this.year);
}

private int getNumberOfDaysInMonth(int year, int month){
int[] numberOfDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(month == 2 && isLeapYear()){
return 29;
} else {
return numberOfDays[month - 1];
}
}

//    private int getNumberOfDaysInYear(int year){
//        if (isLeapYear(year)) {
//            return 366;
//        } else {
//            return 365;
//        }
//    }

private String getMonthName(int month){
String[] monthNames = {"January", "February", "March", "May", "June",
"July", "August", "September", "October", "November", "December"};
return monthNames[month - 1];
}

public void addDays(int days){
while (days != 0){
day++;
if (day > getNumberOfDaysInMonth(year, month)){
month++;
day = 1;
if(month > 12){
month = 1;
day = 1;
year++;
}
}
days--;
}
}

public void subtractDays(int days) {
while (days != 0) {
day--;
if (day == 0) {
if (month == 1) {
month = 12;
day = 31;
year--;
} else {
month--;
}
day = getNumberOfDaysInMonth(year, month);
}
days--;
}
}
}
GregorianDate.java

Код: Выделить всё

public class GregorianDate extends Date {
private int year;
private int month;
private int day;

public GregorianDate(){
this.year = 1970;
this.day = 1;
this.month = 1;
addDays((int)((System.currentTimeMillis()+java.util.TimeZone.getDefault().getRawOffset())/86400000));
}

public GregorianDate(int year, int month, int day){
super();
}

public boolean isLeapYear(int year){
if(year % 4 == 0){
return year % 100 != 0 || (year % 100 == 0 && year % 400 == 0);
}
return false;
}

}
JulianDate.java

Код: Выделить всё

public class JulianDate extends Date{
private int year;
private int month;
private int day;

public JulianDate(){
this.year = 1;
this.day = 1;
this.month = 1;
addDays(719164);
addDays((int)((System.currentTimeMillis()+java.util.TimeZone.getDefault().getRawOffset())/86400000));
}

public JulianDate(int year, int month, int day){
super();
}

public boolean isLeapYear(int year){
return year % 4 == 0;
}

}
Я пробовал размещать функции везде и всюду, чтобы посмотреть, будет ли что-нибудь работать, но, возможно, я что-то упускаю.

Подробнее здесь: https://stackoverflow.com/questions/790 ... bstraction
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»