2013-05-25 2 views
0

У меня есть класс MyDate, в этом классе мне нужно проверить, год ли (год) високосный год. Мой код выглядит следующим образом:как вы проверяете значения конструктора в классе java?

public class MyDate 
{ 
    private int d; 
    private int m; 
    private int y; 

//constructor 

public MyDate(int d, int m, int y) 
    { 
    this.d = d; 
    this.m = m; 
    this.y = y; 
    } 

    public void setDay(int d) 
    { 
     this.d = d; 
    } 

    public int getDay() 
    { 
     return d; 
    } 

    public void setMonth(int m) 
    { 
     this.m = m; 
    } 

    public int getMonth() 
    { 
     return m; 
    } 

    public void setYear(int y) 
    { 
     this.y = y; 
    } 

    public int getYear() 
    { 
     return y; 
    } 



    public void setDate(int d, int m, int y) 
    { 
     setDay(d); 
     setMonth(m); 
     setYear(y); 
    } 

здесь вместо (интермедиат у), нужно ли мне использовать getYear()?

public static boolean isLeap(int y) { 
    if (y % 4 != 0) { 
    return false; 
    } else if (y % 400 == 0) { 
    return true; 
    } else if (y % 100 == 0) { 
    return false; 
    } else { 
    return true; 
    } 
} 

// как это?

public static boolean isLeap(getYear()) { 
    if (y % 4 != 0) { 
    return false; 
    } else if (y % 400 == 0) { 
    return true; 
    } else if (y % 100 == 0) { 
    return false; 
    } else { 
    return true; 
    } 
} 
+3

'int y' является параметром метода' isLeap'. Вероятно, вы хотите использовать 'getYear()' при вызове метода 'isLeap'. –

+0

@Luiggi Mendoza отправил его как ответ –

+0

@MrD Я не уверен, ответит ли это на вопрос OP. Если вы это чувствуете, вы можете использовать мой комментарий как часть своего ответа. –

ответ

1

Ваш метод является статическим, так что вы должны использовать следующее, если метод должен быть static

public static boolean isLeap(int y) 

, потому что вы не можете вызвать getYear() в статическом method.It не принадлежат к объект принадлежит классу. Если можно изменить метод, как нестатической

использования

public boolean isLeap(){ 
int y = this.getYear(); 
.... 
... 
} 
+0

Обратите внимание, что метод 'isLeap' помечен как' static'. Вероятно, OP не должен менять это. –

0

Второй вариант не проходит компиляцию:

public static boolean isLeap(getYear()) {

Посмотрите на это. Во-первых, вы не можете вызывать метод внутри объявления другого метода. Во-вторых, вы не можете вызвать метод экземпляра из статического метода.

Вы можете изменить сигнатуру метода следующим образом:

public boolean isLeap() { 
    // here you can access either instance field y or method getYear() 
} 
0

Не написать свой собственный класс для этого. java.util.GregorianCalendar делает все, что может сделать ваш класс, и имеет метод, называемый isLeapYear().

Смежные вопросы