Привет! Условие: есть главный класс и дополнительный класс к этому классу. В главном классе есть кот, которого можно кормить, поить и просить мяукать. При каждом «мяу» вес кота уменьшается на 1 грамм. В дополнительном классе прописаны «кошачьи» методы, которые используются в главном классе. Ну и у меня задание «замяукать» кота до смерти, то есть чтобы кот мяукнул столько, чтобы его вес стал меньше килограмма. Ну я его сделал, а дальше нужно сделать другие задания и все поместить в один проект Cat. Ну и я закомментировал этот код с первого задания (то есть код, где цикл while). А теперь вопрос: как раскомментировать код так, чтобы он работал вместе с остальным кодом? Попробовал вот так и не вышло. Если для этого нужно создать двух котов (один для цикла while, другой для остального кода), то как это сделать?
Главный класс Loader:
public class Loader {
public static void main(String[] args)
{
System.out.println("catCount = " + Cat.getCount());
Cat cat = new Cat();
System.out.println(cat.getWeight());
while(1000 <= cat.getWeight()) {
cat.meow();
}
System.out.println(cat.getStatus());
Cat cat = getKitten();
// здесь intellij idea подчеркивает cat и пишет "variable 'cat' is already defined in the scope". Что это значит?
System.out.println("catCount = " + Cat.getCount());
cat.feed(999.9);
System.out.println("catCount = " + Cat.getCount());
cat.meow();
System.out.println("catCount = " + Cat.getCount());
cat.restroom();
System.out.println("catCount = " + Cat.getCount());
cat.feed(9999999.9);
System.out.println("catCount = " + Cat.getCount());
cat.meow();
System.out.println("catCount = " + Cat.getCount());
System.out.println("eatenFood = " + cat.getEatenFood());
}
public static Cat getKitten()
{
double weight = 100 + 100 * Math.random();
return new Cat();
}
}
Дополнительный класс Cat:
public class Cat
{
private Double originWeight;
private Double weight;
private Double minWeight;
private Double maxWeight;
private double eatenFood;
private static int count;
public Cat()
{
this(1500.0 + 3000.0 * Math.random());
}
public Cat(double weight)
{
this(weight, weight, 1000.0, 9000.0, 0.0);
}
private Cat(double weight, double minWeight, double originWeight, double maxWeight, double eatenFood)
{
this.weight = weight;
this.originWeight = originWeight;
this.minWeight = minWeight;
this.maxWeight = maxWeight;
this.eatenFood = eatenFood;
if(isAlive())
count++;
}
Cat(double weight, double minWeight, double originWeight, double maxWeight)
{
this(weight, weight, minWeight, maxWeight, 0.0);
}
public Cat(Cat other)
{
this(other.weight, other.originWeight, other.minWeight, other.maxWeight, other.eatenFood);
}
private void setEatenFood(double eatenFood) {
this.eatenFood = eatenFood;
}
private void addEatenFood(double eatenFood) {
setEatenFood(getEatenFood() + eatenFood);
}
public double getEatenFood() {
return eatenFood;
}
public static int getCount() {
return count;
}
public void meow() {
if (isAlive()) {
addWeight(-1.0);
System.out.println("Meow");
}
}
public void feed(Double amount) {
if (isAlive()) {
addWeight(amount);
addEatenFood(amount);
}
}
public void drink(Double amount) {
addWeight(amount);
}
private void setWeight(Double weight) {
if (isAlive()) {
this.weight = weight;
if (isAlive()) {
count--;
}
}
}
private void addWeight(Double weight) {
setWeight(getWeight() + weight);
}
public Double getWeight() {
return weight;
}
public Double getOriginWeight() {
return originWeight;
}
public void restroom() {
if (isAlive()) {
double shrinkage = Math.random() * 20.0;
addWeight(-shrinkage);
System.out.println("Weight shrinkage = " + shrinkage);
}
}
public String getStatus()
{
if(weight < minWeight) {
return "Dead";
}
else if(weight > maxWeight) {
return "Exploded";
}
else if(weight > originWeight) {
return "Sleeping";
}
else {
return "Playing";
}
}
public boolean isAlive ()
{
return getWeight() >= minWeight && getWeight() <= maxWeight;
}
public Cat copy()
{
return new Cat(this);
}
public static Cat copy(Cat other)
{
return new Cat (other);
}
}













