Булеві значення в Java представлені типом boolean, значення якого можуть бути або true, або false.
Java підтримує три булеві оператори:
! (логічне заперечення): заперечує булеве значення&& (логічне і): приймає два булеві значення і повертає true, якщо обидва дорівнюють true
|| (логічне або): повертає true, якщо хоча б одне з двох булевих значень дорівнює true
!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true
У цій вправі ми реалізуємо логіку квесту для нової рольової гри, яку розробляє друг. Головна героїня гри - Анналін, смілива дівчина з відданим і безстрашним псом. На жаль, сталася біда: її найкращого друга викрали під час пошуку ягід у лісі. Анналін спробує знайти й урятувати друга, а може, візьме з собою на квест і свого пса.
Пройшовши деякий час по сліду, Анналін знаходить табір, де увʼязнено її друга. Виявляється, викрадачів двоє: могутній лицар і хитрий лучник.
Знайшовши викрадачів, Анналін обмірковує, які з наведених нижче дій вона може вчинити:
Перед нами чотири завдання: реалізувати логіку визначення, чи доступні описані вище дії, залежно від стану трьох персонажів у лісі та від того, чи присутній пес Анналін.
Реалізуйте (статичний) метод AnnalynsInfiltration.canFastAttack(), який приймає булеве значення (англ. Boolean), що вказує, чи не спить лицар.
Метод повертає true, якщо швидку атаку можна здійснити за станом лицаря.
Інакше він повертає false:
boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false
Реалізуйте (статичний) метод AnnalynsInfiltration.canSpy(), який приймає три булеві значення, що вказують, чи не сплять відповідно лицар, лучник і вʼязень.
Метод повертає true, якщо за групою можна стежити за станом цих трьох персонажів.
Інакше він повертає false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true
Реалізуйте (статичний) метод AnnalynsInfiltration.canSignalPrisoner(), який приймає два булеві значення, що вказують, чи не сплять відповідно лучник і вʼязень.
Метод повертає true, якщо вʼязню можна подати сигнал за станом цих двох персонажів.
Інакше він повертає false:
boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true
Реалізуйте (статичний) метод AnnalynsInfiltration.canFreePrisoner(), який приймає чотири булеві значення.
Перші три параметри вказують, чи не сплять відповідно лицар, лучник і вʼязень.
Останній параметр указує, чи присутній пес Анналін.
Метод повертає true, якщо вʼязня можна звільнити за станом цих трьох персонажів і наявності пса Анналін.
Інакше він повертає false:
boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Зареєструйтеся на Exercism, щоб вивчати й опановувати Java, а також 26 концепцій158 вправ та справжнє наставництво від людей, і все це безкоштовно.