1 Востаннє редагувалося BuzzY (07.09.2016 19:29:44)

Тема: Допомога з об'єктами в Java

Наставте мене на правильний шлях,щось трохи не розумію,як повернути значення true або false.
Задача:

Реалізувати метод fight
Реалізувати метод boolean fight ( Cat anotherCat ) :
реалізувати механізм бійки котів в залежності від їх ваги , віку і сили .
Залежність придумати самому . Метод повинен визначати , чи виграли ми ( this ) бій чи ні ,
тобто повертати true , якщо виграли і false - якщо немає .
Повинно виконуватися умова :
якщо cat1.fight ( cat2 ) = true , то cat2.fight ( cat1 ) = false


public class Cat
{
    public String name;
    public int age;
    public int weight;
    public int strength;

    public Cat()
    {
    }

    public boolean fight(Cat anotherCat)
    {
        Cat cat1 = new Cat();
        cat1.name = "Murzik";
        cat1.age = 1;
        cat1.weight = 2;
        cat1.strength = 19;
        Cat cat2 = new Cat();
        cat2.name = "Klopa";
        cat2.age = 1;
        cat2.weight = 3;
        cat2.strength = 23;
        cat1.fight(cat2);
        if (cat1.strength < cat2.strength && cat1.weight <= cat2.weight || cat1.age <= cat2.age && cat1.weight < cat2.weight)
        {
            public void setFight (cat1.fight(cat2)) {
            this.fight = false;
        }
        }
        else
        {
            public void setFight (cat1.fight(cat2)) {
            this.fight = true;
        }
        }
        if (cat2.strength < cat1.strength && cat2.weight <= cat1.weight || cat2.age <= cat1.age && cat2.weight < cat1.weight)
        {
            public void setFight (cat2.fight(cat1)){
            this.fight = false;
        }
        }
        else
        {
            public void setFight (cat2.fight(cat1)){
            this.fight = true;
        }
        }

    }
}

2

Re: Допомога з об'єктами в Java

ви створюєте кота в методі, котрий не призначений для цього, винесіть ініціалізацію в конструктор

Подякували: koala, leofun012

3

Re: Допомога з об'єктами в Java

FakiNyan написав:

ви створюєте кота в методі, котрий не призначений для цього, винесіть ініціалізацію в конструктор

Якщо я виношу котів з цього метода,я не можу звернутися до їхніх значень

4

Re: Допомога з об'єктами в Java

BuzzY написав:
FakiNyan написав:

ви створюєте кота в методі, котрий не призначений для цього, винесіть ініціалізацію в конструктор

Якщо я виношу котів з цього метода,я не можу звернутися до їхніх значень

Будь ласка, покажіть, як ви це робите. Бо щось у вас там зовсім неправильно, а що - ми без вашого коду не здогадаємося.

Подякували: FakiNyan, BuzzY, leofun013

5 Востаннє редагувалося BuzzY (07.09.2016 19:55:12)

Re: Допомога з об'єктами в Java

public class Cat
{
    public String name;
    public int age;
    public int weight;
    public int strength;

    public Cat()
    {
        Cat cat1 = new Cat();
        cat1.name = "Murzik";
        cat1.age = 1;
        cat1.weight = 2;
        cat1.strength = 19;
        Cat cat2 = new Cat();
        cat2.name = "Klopa";
        cat2.age = 1;
        cat2.weight = 3;
        cat2.strength = 23;
    }

    public boolean fight(Cat anotherCat)
    {
        if (cat1.strength < cat2.strength && cat1.weight <= cat2.weight || cat1.age <= cat2.age && cat1.weight < cat2.weight)
        {
            public void setFight (cat1.fight(cat2)) {
            this.fight = false;
        }
        }
        else
        {
            public void setFight (cat1.fight(cat2)) {
            this.fight = true;
        }
        }
        if (cat2.strength < cat1.strength && cat2.weight <= cat1.weight || cat2.age <= cat1.age && cat2.weight < cat1.weight)
        {
            public void setFight (cat2.fight(cat1)){
            this.fight = false;
        }
        }
        else
        {
            public void setFight (cat2.fight(cat1)){
            this.fight = true;
        }
        }

    }
}
Подякували: FakiNyan1

6 Востаннє редагувалося FakiNyan (07.09.2016 20:10:20)

Re: Допомога з об'єктами в Java

суть цього всього в тому, що от є у вас два кота, і вам цікаво, хто з них сильніший. І ви повинні якось порівняти їх.
Тут можна було б зробити окремий метод, котрий не відноситься до класу Cat, і котрий приймає двох котів, як аргументи

boolean fight(Cat cat1, Cat cat2);

Але це буде якийсь абстрактний метод fight, котрий звідкись з'явився, і чомусь приймає двох котів  в якості аргументів.

Тому уявімо, що ваш клас Cat - це реальний кіт. І ми знаємо, що кіт повинен вміти битись з іншими котами. Тому ми робимо метод fight всередині класу Cat, і також ми розуміємо, що цей кіт повинен битись з іншим котом, тому ми робимо, аби цей метод приймав іншого кота, як аргумент.

Уявіть ще раз, що ви бачите живого кота. І кажете йому - бийся! Це передбачає, що коту відома така дія. Але після цього кіт питає вас - Мяу мяу? що в перекладі з котячого означає - з ким битись? І ви кажете, бийся ось з цим конкретним котом!

А в коді це вигладяє як виклик методу fight, котрий являється частиною кота, і передаєте іншого кота в якості цілі.

Тобто з самого початку у вас вже є два коти, і так, як вони вже є, вони вже повинні мати якісь характеристики, бо ви не можете взяти кота, котрий не має сили і не має ваги, і щось робити з ним. Логічно буде, що кіт отримує вагу і силу при народженні, тобто при створенні екземпляру класа Cat.


все це має виглядати якось так

main()
{
Cat cat1 = new Cat("Василь", 12, 13); // якісь значення, котрі отримує кіт при народженні
Cat cat2 = new Cat("Петро", 14, 12);

boolean result = cat1.fight(cat2); // кажемо коту Василю побитись з котом Петром
}

А клас кота має бути якийсь такий

public class Cat {
public String name;
public int weight;
public int stength;

public Cat(String name, int weight, int strength)
{
this.name=name;
this.weight=weight;
this.strength=strenght;
}

public boolean fight(Cat anotherCat)
{
return strength+weight>anotherCat.strength+anotherCat.weight;

}
}

ну це типу приклад, а поля там свої підставте

Подякували: BuzzY, Torbins, P.Y., leofun014

7

Re: Допомога з об'єктами в Java

OMFG...
Ви взагалі знаєте, що таке ООП? Та що там - що таке зона видимості змінної? Створіть метод main і створюйте cat1 та cat2 там, а конструктор використовуйте за призначенням.

Подякували: FakiNyan, BuzzY, Torbins, leofun014

8

Re: Допомога з об'єктами в Java

пан koala зріт в корінь

Подякували: koala1

9

Re: Допомога з об'єктами в Java

Ось, почитайте: http://replace.org.ua/post/76373/#p76373

Подякували: BuzzY1

10

Re: Допомога з об'єктами в Java

koala написав:

Ось, почитайте: http://replace.org.ua/post/76373/#p76373

Вибачте за дурні питання і дії, я вивчаю мову java всього 2.5 тижні, дякую за цікаву тему .

11

Re: Допомога з об'єктами в Java

Якщо розвивати дальше програму про пухнастих та їхні битви:). То краще б було б створити окремий клас Fight. Який би приймав певних котів і оголошував переможців за певним алгоритмом. Можна було б навіть командні бої тоді організувати:) І логіка кота тоді не залежить від логіки битви.

Подякували: BuzzY1

12

Re: Допомога з об'єктами в Java

Назва невдала - бо вже використовується як назва методу. Тоді вже Battle чи Tournament... чи обидва, похідні від Brawl :)

Подякували: FakiNyan, BuzzY, leofun013