Коты

  • 8
  • Недоступна
Создайте приложение для переписи котов. Для начала попросите пользователя вводить имена котов. После этого программа должна создать объекты cat класса Cat с соответствующими именами и выводить на экран cat.toString().
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (116)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Женя15 уровень, Пинск
11 сентября, 14:55
Я - солидный кошак по имени Василий
Я - милая кошечка по имени Мурочка
Я - милая кошечка по имени Кисюлька
Я уличный кот pirat
java.lang.NullPointerException
	at com.javarush.task.task14.task1404.Solution.main(Solution.java:13)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
Авторы, Вы серьёзно??
Andrey15 уровень, Москва
8 сентября, 08:35
Перепробовал 2-3 разных способа, в idea все четко, а здесь вывод был:
Я - солидный кошак по имени Василий
Я - милая кошечка по имени Мурочка
Я - милая кошечка по имени Кисюлька
Я уличный кот pirat
java.lang.NullPointerException
	at com.javarush.task.task14.task1404.Solution.main(Solution.java:14)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
решил забить и отправить на проверку - все ок
Rus23 уровень, Астана
20 июля, 10:51
задачка легкая решил быстро но над
cat.toString();
застрял пробовал различные вариации cat,Cat,toString() надо было всего лишь System.out.println(cat,toString());
Гаврила Ложкин16 уровень, Москва
13 августа, 11:40
вообще метод toString() не обязательно явно вызывать, он по умолчанию вызывается, то есть можно просто написать System.out.println(cat) и результат будет тот же. Это метод класса Object, по умолчанию возвращает хешкод объекта вроде, короче невразумительные письмена, и обычно его переопределяют чтобы возвращал что-нибудь понятное.
AlexeyV17 уровень
10 июля, 07:54
Простая задача. Сначала просидел над ней 2 дня. Потом наконец включил мозг, и решил за 5 минут. С некоторыми задачами так - пока ее всю не изучишь, не вылижешь все в ней, хрен решишь. Еще кстати надо постоянно перечитывать условие, все пункты. Бывает что какой-то пункт не внимательно прочитал, или забыл - из за этого в голове нестыковки и непонимание. - Тоже важный момент.
Айдар16 уровень, Казань
10 августа, 16:13
))) выражение "... не вылижешь все в ней .... " очень актуальная для этой задачи с котами )))
Павел27 уровень, Минск
23 июня, 15:14
Очень интересная задачка. Сначала тупил как вызвать статический метод getCatByKey(String key), а потом вспомнил что чтобы вызвать статический метод, нужно вызывать его из имени его класса. С ArrayList отлично прошла проверку.
AlexeyV17 уровень
10 июля, 08:02
хм.. а зачем ArrayList ? У меня while а в нем if else
Павел27 уровень, Минск
10 июля, 09:26
решения могут быть разными, у каждого свой подход)
Дмитрий Метельский23 уровень, Минск
9 мая, 16:07
Вопрос: а к чему в задаче классы - MaleCat и FemaleCat?
Pavel Kurashov14 уровень, Новосибирск
14 мая, 13:47
А они соответственно расширяют класс просто Cat и переопределяют .toString чтобы выводить кошечек и кошаков разными фразами.
Дмитрий Метельский23 уровень, Минск
14 мая, 18:10
Точно. Разеватый - не заметил наследования))) Я точно программист))
finetyro16 уровень
7 мая, 07:34
Задачу решил, только не понял, чему хотели этой задачей научить разработчики. Тому, что любой String-литерал в коде уже объект типа String? Возможно этому))) Интересно, а всегда придётся пользоваться условным конструкциями, чтобы сопоставлять введённые данные с объектами? Есть способ сравнить введённую строку с названием объекта, если это не литерал?
Zhenya Kononov18 уровень, Санкт-Петербург
13 августа, 12:58
Мне кажется, такие задачи нужны, чтобы освоиться с вызовов методов с помощью объектов и т.п. Меня, например, операции с объектами вводят в ступор, и такие задачки очень полезны. Что вызвать, какие значения возвращает тот или иной метод, как это все взаимодействует и используется.
Павел24 уровень, Санкт-Петербург
22 апреля, 20:23
единственно что я понял так это вроде как написать цикл while(true) { String s = reader.readLine(); if (s.equals(" ")) { break; }
Dmitiy Jarosh20 уровень, Днепр
27 апреля, 06:57
а поток закрыть если условие соблюдено в иф ?
Artem Yaremchuk26 уровень, Омск
3 мая, 16:27
только не пробел а пустая строка
zloysnegovik18 уровень, Москва
4 мая, 10:06
Поток можно закрыть после завершения цикла, именно в цикле делать это не обязательно
zloysnegovik18 уровень, Москва
4 мая, 10:08
Условие цикла можно написать так, чтобы не использовать вложенное условие, например
String rnd;
while (!(rnd = reader.readLine()).equals("")) {
    Cat cat = CatFactory.getCatByKey(rnd);
    System.out.println(cat.toString());
}
reader.close();
Иван Ващенко17 уровень, Москва
9 июля, 12:13
Можно и так сократить код
....
while(true){
            s = reader.readLine();
            if (!(s.equals(""))){
                System.out.println(CatFactory.getCatByKey(s));
            }
            else {break;}
        }
BubblehUN773R17 уровень
19 июля, 04:53
!s.isEmpty()
Валерий17 уровень
8 апреля, 13:02
1. Открываем поток BufferedReader 2. Считываем с консоли первое имя, перед циклом 3. Открываем цикл while(true) 4. Сначала в цикле делаем проверку, пустая строка или нет.
if (!key.isEmpty())
Если не пустая, то выводим на печать:
System.out.println(CatFactory.getCatByKey(key));
тогда, если строка пустая, то выходим из цикла 5. После проверки, если не вышли из цикла, считываем следующую строку. Всего семь строк кода. Валидатор принял с первой попытки
Abdumalik Saidov15 уровень
8 апреля, 14:19
Всего шесть строк кода.
Павел24 уровень, Санкт-Петербург
22 апреля, 20:50
все равно ничего не понятно
bet22 уровень, Новосибирск
23 апреля, 04:33
Спасибо! Теперь я понял что от меня хотели... Поменял местами пункт 3 и 2 и программа заработала корректно
Dmitiy Jarosh20 уровень, Днепр
27 апреля, 06:59
агонь! сделал if (s.equals(" ")){ reader.close(); } else { CatFactory.getCatByKey(s); } не приняло, не понимаю правда почему....
Yerzhan20 уровень
28 апреля, 10:25
Dmitry Jarosh попробуй еще дописать break; после reader.close();
Виктор19 уровень, Киев
3 мая, 10:29
4 строки получилось. while(!(key = reader.readLine()).equals("")){}
Nubas19 уровень, Новосибирск
3 апреля, 18:37
кто бы догадался с первого раза использовать такую проверку на пустоту сроки? s == null || s.isEmpty() жестоко :'(
Artem Yaremchuk26 уровень, Омск
3 мая, 16:29
это только в браузере, через идею достаточно одного условия
Nubas19 уровень, Новосибирск
3 мая, 19:07
делал в Идее. может просто поправили уже к этому моменту