Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2018, 12:58   #1
Питон
Новичок
Джуниор
 
Регистрация: 01.09.2018
Сообщений: 1
По умолчанию Java. Как вписать код с циклом в программу?

Привет! Условие: есть главный класс и дополнительный класс к этому классу. В главном классе есть кот, которого можно кормить, поить и просить мяукать. При каждом «мяу» вес кота уменьшается на 1 грамм. В дополнительном классе прописаны «кошачьи» методы, которые используются в главном классе. Ну и у меня задание «замяукать» кота до смерти, то есть чтобы кот мяукнул столько, чтобы его вес стал меньше килограмма. Я его сделал, но мне нужно сделать также и другие задания (ну там конструктор написать, создать глубокую копию), и вот чтобы код, который является решением первого задания не мешал коду, который написан как решение всех остальных заданий, я закомментировал Cat cat = new Cat(), цикл while, и System.out.println(cat.getStatus()) . И вопрос: как теперь раскомментировать этот кусок кода, чтобы он работал вместе с остальным кодом? Если для этого нужно две кошки, то как их создать?
Главный класс 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();
// здесь 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);
     }

}
Ну и тут вы мне скажете: "ну назови ты вторую переменную cat1"
Ну все равно ничего не получается. Вот скрин: Вывод не печатает статус кота, который должен умереть и не печатает то, что произошло с cat1. Что я делаю неправильно?
Изображения
Тип файла: jpg умпрямец.jpg (87.1 Кб, 153 просмотров)
Питон вне форума Ответить с цитированием
Старый 02.09.2018, 00:44   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

// здесь cat подчеркнуто и написано "variable 'cat' is already defined in the scope" что это значит?

Это значит, что переменная cat уже определена.

В остальном посмотрите в сторону while

Код:
        while(1000 <= cat.getWeight()) {
            cat.meow();
        }
Думаю, что-то в нем)))
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 02.09.2018 в 00:57.
Bugrimov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как 🔹 ⛔ подобные символы вписать в UTF-8 php код? Aleskandr Помощь студентам 7 08.01.2018 18:22
Как вписать в код вместо кнопки Submit красивую кнопку? shavedcat HTML и CSS 5 20.09.2014 00:43
Нужно вписать в программу еще одно действие. Dumbl-D Помощь студентам 3 29.11.2013 15:19
можно ли вписать в программу что бы при самокопировании она немного изменяла програмный код копии ? Диман В Помощь студентам 4 13.09.2011 19:08
код TP7 с циклом for to do D1zz1 Помощь студентам 5 10.06.2011 17:00