Таким образом, вы проверяете, являются ли поля дня, месяца и года 1, 10 0r 11. Если это так, то это двоичная дата, в противном случае это не двоичная дата. Возможно, ваш метод getBinary () должен просто возвращать логическое значение. Вам не нужен цикл while, скорее, будет работать оператор if:
public boolean getBinary(){
if(month == 1 || month == 10 || month == 11){
if(day == 1 || day == 10 || day = 11){
if(year == 0 || year == 1 || year == 10 || year == 11){
return true;
}
}
return false;
}
Кроме того, ваш расчет високосного года может быть упрощен, если вы начнете с делимого на 400. Например,
if(year is divisible by 400)
leap year
else
if year is divisible by 100 then
not a leap year
else
if year is divisble by 4 then
leap year
else
not a leap year
или все это можно превратить в простое логическое выражение, подобное этому
if(year is divisible by 400 or (year is not divisble by 100 and divisible by 4))
leap year
else
not leap year
===================
Учитывая год с четырьмя цифрами, вы можете разделить каждую цифру следующим образом:
int num = year; //to preserve the original year value
int digit = num / 1000; //get first digit
//check if digit is 0 or 1
num = num % 1000; //remove first digit
digit = num / 100; //get second digit
//check if digit is 0 or 1
num = num % 100;//remove second digit
etc