Программа учета имен

  • 2
  • Недоступна
Генеральный консул планеты Руфус Андрю-Ша застрял на межгалактической железной дороге по причине некорректной работы программы учёта домашних животных пассажиров дипломатического корпуса Федерации. В этой программе сломался метод фиксации имен. Давайте исправим ситуацию: напишем для железнодорожников необходимый им метод setName.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (64)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Роман Уразов4 уровень, Воронеж
Monday, 08:36
Проблема этой задачи в том, что не очевидно нифига, что надо создавать объект класса Cat. Идея задачи в том, что метод не будет работать на класс, он работает на объект класса. Я убил час на то, чтобы допереть до этого.
Евгений4 уровень, Минск
5 June, 18:17
Вроде дошло: метод НЕ СтатическиЙ поэтому можно уравнять переменные через ( this ), а СтатическиЙ через ИМЯ КлассА.
Алексей4 уровень, Ярославль
4 June, 15:02
Благодаря этой и другим задачам данной лекции в голове начинает устаканиваться информация предыдущей лекции =) Странно, почему эти задачки не в предыдущей лекции, ведь они попроще тех, что там.
Slava Levchenko7 уровень, Чита
13 April, 07:20
хорошее объяснение какого то автора из коментов ранее ... 1. Если переменная помечена словом "static", то она общая для всех объектов, что будут созданы.(Что-то вроде общей ячейки в банке, из которой все могут брать что-то, и все могут туда ложить что-то). 2. THIS используйте, когда имена вашей переменной в классе и переменной в методе совпадают. Не заморачивайтесь, просто помните - вызов переменной в методе - ее имя. Вызов переменной в классе - this. + ее имя. Ничего сложного, пацаны :D. 3. Если видишь что в метод объявлен СТАТИЧЕСКИМ, то про this ЗАБУДЬТЕ сразу!!1 Когда переменная или класс статитический, то он вызывается ClassName.methodName(). (Типа у вас есть класс Cat, а внутри - метод catCount(). Так вот чтоб его вызвать, юзайте Cat.catCount() . ) 4. Короче: Нестатический метод - забей и юзай This. Если статический, то вместо this пишешь название его класса. Все.
Владимир4 уровень, Архангельск
10 February, 16:21
Я не до конца понял этот момент... Поему иногда нужно
Cat.fullName = fullName;
А иногда
this.fullName = fullName;
BariO16 уровень, Nizhniy Novgorod
11 February, 10:41
если переменная статик то она не относится к какому либо объекту. она относится ко всему классу. поэтому Cat. а обычная переменная для каждого объекта своя. this
C-Grey17 уровень, Санкт-Петербург
19 February, 20:12
то есть в методе main мы вызываем функцию setName c параметрами, нfпример, "барсик петров". метод setName должен вписать это в свою fullName и присвоить это значение тому fullName которое в классе Cat....верно? почему тогда внутри метода setName "this" приписывается к той переменной которую надо по идее менять, а нек той в которую мы только что записали значиние которое надо отправить в тот первый fullName из второй строчки?
BariO16 уровень, Nizhniy Novgorod
20 February, 07:19
ты метод setName можешь вызывать только через объект т.к. метод не статичен.
Cat cat = new Cat();
cat.setName(.............);
следовательно объект, который вызывает этот метод и есть this. тут другого не дано можно было бы this и не писать вовсе, но поскольку ты внутри метода создаешь еще одну переменную
String fullName
с таким же именем, то их между собой как-то надо отличать. можно сделать было так:
public void setName(String firstName, String lastName) {
        this.fullName = firstName + " " + lastName;
        }
или даже так, но тогда не очень читаемо. когда есть this сразу понятно что к чему:
public void setName(String firstName, String lastName) {
        fullName = firstName + " " + lastName;
        }
Мариам10 уровень
26 December 2019, 17:55
иногда надо писать имякласса.имяпеременной, а иногда this.имяпеременной. Если СТАТИЧНАЯ то по полной программе пишем имякласса.имяпеременной. А если НЕ статичная то и this сойдёт
Ilyas Badavi9 уровень, Казань
17 December 2019, 14:42
Не забываем что приватная переменная стринг - "fullName" НЕСТАТИЧНА
Иван П4 уровень, Краснодар
20 November 2019, 19:03
Для тех, кто спрашивал, как вывести на экран в главном методе main результат работы метода setName: Cat cat1 = new Cat(); //создаем объект cat1 cat1.setName("Васька", "Котович"); //вызываем из объекта cat1 метод setName с параметрами ("Васька", "Котович") System.out.println(cat1.fullName);
Natasha Bert18 уровень, Szczecin
13 October 2019, 00:08
Ну давайте я напишу ещё раз про главное качество всех нас - внимательность.
Олександр Фалендиш8 уровень, Харьков
14 January, 15:16
написать fullname; и перебирать разные варианты)))
Sergey9 уровень
21 January, 07:25
Как же бесит иногда это регистр, особенно если набиваешь вручную) запалился на fullname и долго не мог понять почему у меня не работает.😬
Yuliia Obukhova7 уровень, Одесса
11 September 2019, 19:39
Прошу объяснить ! В строчке : String fullName = firstName + " " + lastName; - мы задаем значение переменной private, объявленной в начале описания класса, а строчкой this.fullName = fullName;присваиваем значение переменной private для переменной, объявленной внутри метода? Все верно?
Andrey Dunaevsky4 уровень, Beer-Sheva
11 November 2019, 10:06
Yuliia , всегда хорошо пишет =)