Написание своей булиновской функции

Ответить
Аватара пользователя
powercat
Сообщения: 508
Зарегистрирован: 20 июл 2012, 11:31

Написание своей булиновской функции

Сообщение powercat » 21 сен 2012, 11:25

Не могу немного понять нотацию написания. Вот так ругается, подчеркивает первую строку и говорит "This method must return a result of type boolean"

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

	private boolean Compare(int dbYear,int dbDay){

		Calendar calendar=Calendar.getInstance();

		int exYear=calendar.get(Calendar.YEAR);
		int exDayOfYear=calendar.get(Calendar.DAY_OF_YEAR);

		if (exYear==dbYear){
			if (exDayOfYear==dbDay){
				return true;
			}
		}else{
			return false;	
		}
	}
Но ведь я аж явно ему задаю возвраты обоих его возможных значений. При этом на это код не ругается и нормально отрабатывает:

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

	private boolean Compare(int dbYear,int dbDay){

		Calendar calendar=Calendar.getInstance();

		int exYear=calendar.get(Calendar.YEAR);
		int exDayOfYear=calendar.get(Calendar.DAY_OF_YEAR);

		if (exYear==dbYear){
			if (exDayOfYear==dbDay){
				return true;
			}
		}
		return false;
	}
Очень странно мне это...пошагово получается слудующее (передаю аргументы так, чтобы получить true) - после второй проверки курсор НЕ переходит на return true, а скачет на return false, но при этом возвращает именно true, как и должно быть...Вообще не понимаю ))) И еще...т.к. return false вынесено в конец, то по идее должен вернуть в любом случае false, но это не происходит, и возвращается корректное значение....В VB логика бы нарушилась, а тут работает правильно. Почему?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Написание своей булиновской функции

Сообщение damager82 » 21 сен 2012, 14:42

Смотрим первый листинг.

Оператор else тут относится к первому условию, с годами.

Если подать на вход текущий год, но не текущий день.
(exYear==dbYear) вернет true (else уже точно не выполнится),
проваливаемся внутрь,
(exDayOfYear==dbDay) вернет false,
выходим из условия,
попадаем в конец функции

В этом случае Java искренне не понимает, что должна вернуть функция. Потому и ругается.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Ответить