Есть вес кошки, есть максимальный и минимальный возможный вес, при выходе за пределы допустимого веса кошка умирает. Как заморозить переменную "weight", т.е. что-бы вес мёртвой кошки нельзя было менять?
Я попытался использовать final, но по моему он работает только при объявлении новой переменной. Или не надо было писать условие if в конструкторе, хотя при написании в классе всё становится ещё хуже...
public Cat()
{
weight = 1500.0 + 3000.0 * Math.random();
originWeight = weight;
minWeight = 1000.0;
maxWeight = 9000.0;
count++;
if(weight < minWeight || weight > maxWeight) {
this.weight = final();
}
}
Хм, а чем плох сеттер с проверкой? ru.wikipedia.org/wiki/Setter#Java
Что-то такое уже есть. Но не понимаю как зафиксировать вес?
public String getStatus()
{
if(weight < minWeight) {
count--;
return "Dead";
}
else if(weight > maxWeight) {
count--;
return "Exploded";
}
else if(weight > originWeight) {
return "Sleeping";
}
else {
return "Playing";
}
}
Как уже писали в коментах, Вам нужно сделать setter
с условием.
class Cat {
private int weight = 0;
public Cat(int weight) {
this.weight = weight;
}
public void setWeight(int weight) {
// Если вес меньше 100 изменяем значение переменной иначе ничего не делаем
// Если условие не выполнено можно выкинуть ошибку или еще что то сделать
if (this.weight < 100){
this.weight = weight;
} else {
System.out.println("Кот слишком толстый");
}
}
public int getWeight() {
return this.weight;
}
}
public class Cat {
public static int count;
private double weight;
private boolean isDead;
public Cat(double weight) {
this.weight = weight;
this.count++;
if (weightKill()) {
System.out.println('Dead before born');
}
}
public void setWeight(double weight) {
if (this.isDead) {
System.out.println('This cat is dead yet');
return;
}
this.weight = weight;
if (weightKill()) {
System.out.println('This diet is killing');
}
}
private boolean weightKill() {
if (this.weight > 20.0 || this.weight < 1.0) {
this.isDead = true;
this.count--;
}
return this.isDead;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть программа, которая позволяет пользователю войти и добавить продуктыПри регистрации отправляется линк для активации профиля это в email - е выглядит...
Возникла проблема с программным переопределением цвета рамки CheckBox'а в отключенном состоянии
Не знаю как подступиться к задачеЕсть actor который крутит анимацию, при смене кадра связанный объект player должен сдвинуться
Есть ли в библиотеке libgdx классы реализующие экранный контроллер, идеально было бы "рычажок в круге"?