• ,

level05.lesson07.task02;

решил все задачи этой темы, а эта не засчитывается. Пробывал много вариантов. Этот мне нравится больше всего. Посмотрите что не так.
package com.javarush.test.level05.lesson07.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью инициализаторами:
— Имя,
— Имя, вес, возраст
— Имя, возраст (вес стандартный)
— вес, цвет, (имя, адрес и возраст неизвестны, это бездомный кот)
— вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес неизвестен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

public class Cat
{
public String nName=null;
public int sweight=4;
public int sage=4;
public String aAddress=null;
public String cat=null;
public void initialize(String name)
{
this.cat=name;
}
public void initialize(String name, int weight, int age){
this.cat=name+weight+age;
}
public void initialieze(String name, int age){
this.cat=name+age+sweight;
}
public void initialize(int weight, String color){
this.cat=weight+color+nName+aAddress+sage;
}
public void initialize(String weight, String color, String address){
this.cat=weight+color+address;
}
}

53 комментария

antonikum
  • antonikum
  • 0
  • Комментарий отредактирован 2014-08-04 17:24:03 пользователем antonikum
Вы немного напутали с полями =) Зачем данные о коте (имя, вес, возраст) пихать в одно поле string?
Вот, пример для инициализатора имя+возраст:
public void initialize(String name, int age)
    {
        this.nName = name;
        this.sage = age;
    }

И не вижу у Вас поле, отвечающее за цвет.
Sydney
а в
public void initialize(String name)
{
this.cat=name;
}
тоже должеть быть цвет, вес, возраст кроме имени?
antonikum
Нет, в этом инициализаторе всё правильно. Вы посылаете ему только имя, он его и переопределяет.
1) определите ещё одно дополнительное поле для класса — цвет. И это поле должно быть уже инициализировано каким-нибудь значением.
public String color = "grey";

2) поле цвет используется переопределяется только в двух инициализаторах (последних двух).
p-ray
initialieze — ошибка=)
p-ray
у тебя в классе определено поле public String cat=null;, которое ты инициализаторами меняешь. Ты не создаёшь валидные объекты=) остальные поля у тебя тут не используются вообще=) это не разновидности кошек, ты меняешь саму суть кошек=)
Sydney
  • Sydney
  • 0
  • Комментарий отредактирован 2014-08-04 18:27:19 пользователем Sydney
спасибо большое) с 12 попытки все же сдал)
BonDyka
private String name = null;
private int weight = 4;
private int age = 3;
private String color = «grey»;
private String adress = null;

public void initialieze(String name){
this.name = name;
}
public void initialieze(String name, int weight, int age){
this.name = name;
this.weight = weight;
this.age = age;
}
public void initialieze(String name, int age){
this.name = name;
this.age = age;
int weight = this.weight;
}
public void initialieze(int weight, String color){
this.weight = weight;
this.color = color;
String name = this.name;
String adress = this.adress;
int age = this.age;

}
public void initialieze(int weight, String color,String adress){
this.weight = weight;
this.color = color;
this.adress = adress;
}

}
Подскажите в чем я неправ. Программа не проходит тестирование
BonDyka
initialieze это уже исправил
BonDyka
Всем спасибо! Разобрался
DimaD
  • DimaD
  • 0
  • Комментарий отредактирован 2014-08-12 04:12:54 пользователем DimaD
ребята, помогите мне разобраться что здесь не так. Спасибо

package com.javarush.test.level05.lesson09.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью конструкторами:
- Имя,
- Имя, вес, возраст
- Имя, возраст (вес стандартный)
- вес, цвет, (имя, адрес и возраст – неизвестные. Кот - бездомный)
- вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес не известен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

import com.javarush.test.level04.lesson02.task05.Solution;

public class Cat
{
    public String name = null;
    public int weight = 5;
    public int age = 5;
    public String color = "Unknown";
    public String address = null;

    public void initialize(String name)
    {
        this.name = name;
    }
    public void initialize (String name, int weight, int age)
    {
        this.name = name;
        this.weight = weight;
        this.age = age;
    }
    public void initialize(String name, int age)
    {
        this.name = name;
        this.age = age;
    }
    public void initialize(int weight, String color)
    {
        this.weight = weight;
        this.color = color;
    }
    public void initialize(int weight, String color, String address)
    {
        this.weight = weight;
        this.color = color;
        this.address = address;
    }
}
mpaker
  • mpaker
  • 0
  • Комментарий отредактирован 2014-08-12 04:24:21 пользователем mpaker
— вес, цвет, (имя, адрес и возраст – неизвестные. Кот — бездомный)
Не выполняется, поскольку возраст уже 5
DimaD
спасибо за ответ, но если убрать" = 5" вначале, то все равно не проходит.
BappekM
Вам надо сделать конструкторы, а у вас что получилось?)
DimaD
Я начал с конструктора, то потом меня фраза «Задача инициализатора – сделать объект..» сбила… В любом случае если изменить все «public void initialize» на «public Cat» все равно не работает.

и еще,
«Например, если вес не известен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста.»
Вот возраст можно указать стандартный с самого начала, а вот как потом его изменить на неизвестный?

Спасибо
igor
Первый вопрос — приведи код, где ты изменил.
Второй — обращаться к полю объекта можно через this.название_поля, например в твоем случае
this.weight = 100000;

П.С.
Идея подсвечивает ошибки, может стоит обратить на них внимание?
dimaMJ
вообще то все переменные имя возраст вес и т.д. при обьявлении не нужно инициализировать. В конструкторе задача такая, если допустим в конструктор передается только имя и возраст, то нужно так же в конструкторе задать вес, такой записью
this.weight = 5

так же в возрастом и с именем, адрес и цвет не являются значительными )
DimaD
Спасибо, я тоже и так пытался сделать, но система не принимает это как правильный ответ. Я уже пропустил это задание пока не пойму что не так. Если есть какие нибудь соображения, то буду очень благодарен. Вот код
package com.javarush.test.level05.lesson09.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью конструкторами:
- Имя,
- Имя, вес, возраст
- Имя, возраст (вес стандартный)
- вес, цвет, (имя, адрес и возраст – неизвестные. Кот - бездомный)
- вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес не известен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

import com.javarush.test.level04.lesson02.task05.Solution;

public class Cat
{
    public String name;
    public int weight;
    public int age;
    public String color;
    public String address;

    public Cat(String name)
    {
        this.name = name;
    }
    public Cat (String name, int weight, int age)
    {
        this.name = name;
        this.weight = weight;
        this.age = age;
    }
    public Cat(String name, int age)
    {
        this.name = name;
        this.age = age;
        this.weight = 5;
    }
    public Cat(int weight, String color)
    {
        this.weight = weight;
        this.color = color;
    }
    public Cat(int weight, String color, String address)
    {
        this.weight = weight;
        this.color = color;
        this.address = address;
    }
}
Voronblack
Например, если вес неизвестен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста.
DimaD
Спасибо за ответ.

Я и так пробовал, но не проходит. Я этот код уже несколько раз сначала переписывал, но я еще не сдаюсь. вот последнее. Вроди бы все просто, но гдето я чтото туплю.

package com.javarush.test.level05.lesson09.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью конструкторами:
- Имя,
- Имя, вес, возраст
- Имя, возраст (вес стандартный)
- вес, цвет, (имя, адрес и возраст – неизвестные. Кот - бездомный)
- вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес не известен, 
то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. 
То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

import com.javarush.test.level04.lesson02.task05.Solution;

public class Cat
{
    public String name;
    public int weight;
    public int age;
    public String color;
    public String address;

    public Cat(String name)
    {
        this.name = name;
    }
    public Cat (String name, int weight, int age)
    {
        this.name = name;
        this.weight = weight;
        this.age = age;
    }
    public Cat(String name, int age)
    {
        this.name = name;
        this.age = age;
        this.weight = 5;
    }
    public Cat(int weight, String color)
    {
        this.weight = weight;
        this.color = color;
        this.age = 5;
    }
    public Cat(int weight, String color, String address)
    {
        this.weight = weight;
        this.color = color;
        this.address = address;
    }
}

Voronblack
Ответь на вопрос, какой вес и возраст у кота созданного этим конструктором
public Cat(String name)
    {
        this.name = name;
    }

И как это соотносится с тем, что я написал выше.
DimaD
  • DimaD
  • 0
  • Комментарий отредактирован 2014-08-13 08:29:41 пользователем DimaD
я думал здесь нужен просто конструктор для имени, и только в четвертом случае (имя, адрес и возраст – неизвестные. Кот — бездомный) нужен конструктор с каким нибудь весом и возрастом.

поставил для всех обязательный вес и возраст по 5 (или this.weight = weight; this.age = age;), но все равно не проходит :(
Lars
Убери еще вот эту строку:
import com.javarush.test.level04.lesson02.task05.Solution;
DimaD
хмм, помогло… Странно конечно, но большое спасибо за идею…
artushenko
Вроде все сделал правильно, но почему-то выдает ошибку.
public class Cat
{
    //Напишите тут ваш код
    private String name;
    private float weight;
    private float age;
    private String color;
    private String adress;

    public Cat(String name)
    {
        this.name = name;
        this.weight = 3;
        this.age=4;
        this.color="black";
        this.adress=null;
    }

    public Cat(String name, float weight, float age)
    {
        this.name = name;
        if (weight>0)
        this.weight = weight;
        else this.weight= 3;
        this.age = age;
        this.color="black";
        this.adress=null;
    }

    public Cat(String name, float age)
    {
        this.name = name;
        this.weight = 3;
        if (age>0)
        this.age = age;
        else this.age=4;
        this.color="black";
        this.adress=null;
    }

    public Cat(float weight, String color)
    {
        this.name=null;
        if (weight>0)
            this.weight = weight;
        else this.weight= 3;
        this.age=4;
        this.color = color;
        this.adress=null;
    }

    public Cat(float weight, String color, String adress)
    {
        this.name=null;
        this.weight = weight;
        if (weight>0)
            this.weight = weight;
        else this.weight= 3;
        this.age=4;
        this.color = color;
        this.adress = adress;
    }
artushenko
Все, сам во всем разобрался, что-то я изначально сам все себе усложнил. Там же все просто

    private String name=null;
    private float weight = 3;
    private float age = 4;
    private String color = "black";
    private String adress=null;

И вместо конструктора надо было public void initialize сделать.
К тому же никакие if'ы не нужны.
utushalla
Долго думал, в чём же суть и где была ошибка (код ниже рабочий).
А суть в том, что нужно внимательно читать условие, лучше несколько раз. =)

package com.javarush.test.level05.lesson07.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью инициализаторами:
— Имя,
— Имя, вес, возраст
— Имя, возраст (вес стандартный)
— вес, цвет, (имя, адрес и возраст неизвестны, это бездомный кот)
— вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес неизвестен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

public class Cat
{
public String name;
public int age;
public int weight;
public String color;
public String adr;
public void initialize(String name)
{
this.name = name;
this.age = 5;
this.weight = 6;
}
public void initialize(String name, int weight, int age)
{
this.name = name;
this.weight = weight;
this.age = age;
}
public void initialize(String name, int age)
{
this.name = name;
this.age = age;
this.weight = 6;
}
public void initialize(int weight, String color)
{
this.color = color;
this.weight = weight;
this.age = 5;
} //Напишите тут ваш код
public void initialize(int weight, String color, String adr)
{
this.weight = weight;
this.color = color;
this.adr = adr;
this.age = 5;
}
}
MYCTANG

Подскажите в чем ошибка

package com.javarush.test.level05.lesson07.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью инициализаторами:
- Имя,
- Имя, вес, возраст
- Имя, возраст (вес стандартный)
- вес, цвет, (имя, адрес и возраст неизвестны, это бездомный кот)
- вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес неизвестен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

public class Cat
{
    public String name ;
    public int weight =11;
    public int age =11;
    public String color = "black";
    public String addres ;
    public void initilized (String name){
        this.name=name;
    }
    public void initilized (String name,int weight, int age){
        this.name=name;
        this.weight=weight;
        this.age=age;
    }
    public void initilized (String name, int age){
        this.name=name;
        this.age=age;
    }
    public void initilized (int weight, String color){
        this.color=color;
        this.weight=weight;
    }
    public void initilized (int weight, String color, String addres){
        this.color=color;
        this.addres=addres;
        this.weight=weight;
    }

}
Docktor91
initilized прочитай внимательно
MYCTANG
  • MYCTANG
  • 0
  • Комментарий отредактирован 2014-09-19 22:53:49 пользователем MYCTANG
Исправил, все равно не засчитывает
Docktor91
  • Docktor91
  • 0
  • Комментарий отредактирован 2014-09-19 23:02:35 пользователем Docktor91
address, на что исправил, на initialize()?
MYCTANG
Все, разобрался, спасибо
yasha
  • yasha
  • 0
подскажите что не так
private String name;
private String color;
private String adress;
private int age;
private int weight;
public void initialize(String name){
this.name = name;}
public void initialize(String name, int age, int weight){
this.name = name;
this.weight = weight;
this.age = age;}
public void initialize(String name, int age, int weight){
this.name = name;
this.age = age;
this.weight = 3;}
public void initialize(String color, int weight){
this.color = color;
this.weight = weight;}
public void initialize(int weight, String color, String adress){
this.weight = weight;
this.color = color;
this.adress = adress;}

}
yasha
ошибка такая
src/com/javarush/test/level05/lesson07/task02/Cat.java:26: error: method initialize(String,int,int) is already defined in class Cat
public void initialize(String name, int age, int weight){
MYCTANG
public void initialize(String name, int age, int weight){
this.name = name;
this.age = age;
this.weight = 3;}

В этом инициализаторе не надо передавать вес в виде аргумента
ossorin
Немного расширю предыдущий ответ — у вас два раза встречается метод с одинаковыми аргументами public void initialize(String name, int age, int weight).
Это ошибка — система не знает, какой метод брать в работу.
Поэтому, один из методов должен быть только с двумя аргументами.
Очевидно, что там, где вы присваиваете значение this.weight = 3 принудительно, этот аргумент принимать в метод не нужно, то есть их должно быть всего 2.
public void initialize(String name, int age)

удачи в решении )
yasha
Спасибо большое
yasha
  • yasha
  • 0
private String name;
private String color;
private String adress;
private int age;
private int weight;
public void initialize(String name){
this.name = name;}
public void initialize(String name, int age, int weight){
this.name = name;
this.weight = weight;
this.age = age;}
public void initialize(String name, int age){
this.name = name;
this.age = age;
}
public void initialize(String color, int weight){
this.color = color;
this.weight = weight;}
public void initialize(int weight, String color, String adress){
this.weight = weight;
this.color = color;
this.adress = adress;}
исправил все равно не работает
yasha
  • yasha
  • 0
src/com/javarush/test/level05/lesson07/task02/Cat.java:30: error: method initialize(String,int) is
теперь ругается на следующий конструктор
already defined in class Cat
public void initialize(String color, int weight){
^
1 error
yasha
разобрался уже спасибо
dominisantus
  • dominisantus
  • 0
  • Комментарий отредактирован 2014-09-24 14:56:55 пользователем dominisantus
Разобрался, простыми словами процесс можно описать так:

в классе мы задаем переменные (вес, рост и тд) со стандартными (средними) значениями.
а в инициализаторах уже переопределяем значения только тех параметров, которые нам изестны, типа

<code>this.sAge = age;</code>
(где sAge — средний возраст имеющий стандартное значение, age — возраст передаваемый при создании кота)

таким образом мы можем получить как кота полностью описанного и известного, так и кота с N-неизвестными параметрами, при этом на этапе создания этого кота нам не нужно знать сколько из его параметров нам могут быть известны и каких.

Если я не правильно понял логику работы инициализаторов поправьте меня?
eretik
«Программа не прошла тестирование»

Не могу понять в чем дело.

public class Cat
{
    String name;
    int weight;
    int age;
    String color;
    String adres;



    //- Имя,
    public void initilize(String name){
        this.name=name;
        this.age=5;
        this.weight=2;
    }

//- Имя, вес, возраст

    public void initilize(String name, int weight, int age){
        this.name=name;
        this.weight=weight;
        this.age=age;
    }

//- Имя, возраст (вес стандартный)
    public void initilize(String name, int age){
        this.name=name;
        this.age=age;
        this.weight=2;

    }
//- вес, цвет, (имя, адрес и возраст неизвестны, это бездомный кот)
    public void initilize (int weight, String color){
        this.weight=weight;
        this.color=color;
        this.age=5;
        }

//    - вес, цвет, адрес ( чужой домашний кот)
    public void initilize (int weight, String color, String adres){
        this.weight=weight;
        this.color=color;
        this.adres=adres;
        this.age=5;
            }
}
eretik
Нашел косяк. Было
initilize
а нужно было:
initialize
Blu
И прошло?
eretik
да.
Andrey74
Я вообще что-то не могу врубиться в инициализацию объектов.
eretik
Здесь инициализация работает как конструктор. Почитайте про Конструктор.
Andrey74
Спасибо! У меня позже тоже пришло понимание, что это и есть конструктор.
arojer
Считаю, что проверка на валидность решения или технически не может сделать все оценки правильности, или что-то пропущено. Засчиталось задание с неверным (по сути задания) решением — если сделать 1 переменную private String myCat = null; и потом инициировать этот самый myCat пятью инициаторами «в одну строчку». Код, думаю, очевиден — не буду приводить его полностью.
carsar
Не могу понять что я делаю не правильно.
package com.javarush.test.level05.lesson09.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью конструкторами:
— Имя,
— Имя, вес, возраст
— Имя, возраст (вес стандартный)
— вес, цвет, (имя, адрес и возраст – неизвестные. Кот — бездомный)
— вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес не известен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

public class Cat
{
private String name = null;//имя
private String color = «Black»;//цвет
private String address = null;//адрес
private int weight = 8;//вес
private int age;//возраст

public Cat (String name) //- Имя,
{
this.name = name;
}
public Cat (String name, int weight,int age) //- Имя, вес, возраст
{
this.name = name;
this.weight = weight;
this.age = age = 5;
}
public Cat (int weight, String color)//- вес, цвет, (имя, адрес и возраст – неизвестные. Кот — бездомный)
{
this.weight = weight;
this.color = color;
String name = this.name;
String adress = this.address;
int age = this.age;
}
public Cat (int weight, String color,String address)//- вес, цвет, адрес ( чужой домашний кот)
{
this.weight = weight;
this.color = color + address;
}
}
carsar
Не могу понять что я делаю не правильно.
package com.javarush.test.level05.lesson09.task02;

/* Создать класс Cat
Создать класс Cat (кот) с пятью конструкторами:
— Имя,
— Имя, вес, возраст
— Имя, возраст (вес стандартный)
— вес, цвет, (имя, адрес и возраст – неизвестные. Кот — бездомный)
— вес, цвет, адрес ( чужой домашний кот)
Задача инициализатора – сделать объект валидным. Например, если вес не известен, то нужно указать какой-нибудь средний вес. Кот не может ничего не весить. То же касательно возраста. А вот имени может и не быть (null). То же касается адреса: null.
*/

public class Cat
{
private String name = null;//имя
private String color = «Black»;//цвет
private String address = null;//адрес
private int weight = 8;//вес
private int age;//возраст

public Cat (String name) //- Имя,
{
this.name = name;
}
public Cat (String name, int weight,int age) //- Имя, вес, возраст
{
this.name = name;
this.weight = weight;
this.age = age = 5;
}
public Cat (int weight, String color)//- вес, цвет, (имя, адрес и возраст – неизвестные. Кот — бездомный)
{
this.weight = weight;
this.color = color;
String name = this.name;
String adress = this.address;
int age = this.age;
}
public Cat (int weight, String color,String address)//- вес, цвет, адрес ( чужой домашний кот)
{
this.weight = weight;
this.color = color + address;
}
}
carsar
Вопрос снимаю сам разобрался, 5 конструктор вставил, и убрал значения с переменной возраст. но все же интересно код корректный?
kostya_sokolov
package com.javarush.task.task05.task0517;

/*
Конструируем котиков
*/

public class Cat {
public String name = null;
public int age = 6;
public int weight = 4;
public String address = null;
public String color = null;
private Cat( String name)
{
this.name = name;
}
public Cat(String name, int age, int weight)
{
this.name = name;
this.age = age;
this.weight = weight;
}
public Cat(String name, int age)
{
this.name = name;
this.age = age;
}
public Cat(int weight, String color)
{
this.color = color;
this.weight = weight;
}
public Cat(int weight, String color, String address)
{
this.color = color;
this.weight = weight;
this.address = address;
}
public static void main(String[] args) {

}
}
помогите пожалуйста, никак не могу понять почему не работает: с
lichMax
Используйте тег "<>" (код), а то читать очень сложно.
И по-моему нужно использовать инициализаторы, а не конструкторы.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.