Шифр Цезаря

  • 12
  • Недоступна
Привет Амиго. Ты знаешь, за нами следят, просматривают нашу переписку. Поэтому нужно шифровать трафик. Для тебя не составит труда реализовать шифр Цезаря, напомню что это просто сдвиг вправо по алфавиту на key букв. В методе main есть хороший пример. Реализуй логику метода String decode(StringReade
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (28)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Никита35 уровень
16 сентября, 11:31
reader.toString() вернет вам имя java.io.StringReader@1540e19d а не текст что он хранит...нужно читать лекцию подробнее
Сергей35 уровень, Одесса
3 сентября, 13:45
Тот же вопрос , объяснения не нашел. По сути делаем двойную проверку (ready() + считанное значение != -1) Проверил - если убрать проверку на -1 - получим переполнение стека, т.е. поток готов ВСЕГДА ! P.S. подозреваю, что это кривая реализация перегруженного ready() от родителя ...
Philip J.40 уровень, Днепр
14 сентября, 20:15
ready() лучше вообще не использовать, это крайне ненадёжная штука, просто разработчики JavaRush привили нам плохую привычку. Одной проверки хватает за глаза
while ((i = reader.read()) != -1) {
           //логика
        }
Если хотите подробностей, рекомендую лекции Головача по потокам ввода-вывода.
s1tcomsfan40 уровень, Минск
31 августа, 09:48
не понял я почему цикл
while (reader.ready()){...}
не заканчивается
Andry Max35 уровень, Минск
15 августа, 03:11
даже удивлён, что я всё правильно понял и решение прокатило с первой попытки)
Евгений Бородин26 уровень, Екатеринбург
2 июля, 12:07
Простая задача:
if (reader == null)
       return "";
   StringBuilder stringBuilder = new StringBuilder();
   for(int c = reader.read();  c != -1; c = reader.read()) {
       stringBuilder.append((char)(c + key));
   }
   return stringBuilder.toString();
NastyaGermanovich35 уровень, Санкт-Петербург
28 мая, 14:29
Нужно обязательно объявить результирующую строку, инициализировать ее в конце и передать, просто сделать так: return new String(buffer).trim(); нельзя!! ><
Андрей Толкачев40 уровень, Москва
19 июля, 10:42
наверное что-то пофиксили, теперь можно.
Dima22 уровень, Санкт-Петербург
14 мая, 14:09
Условие, немного сбило меня с толку, насчет того что метод не должен возвращать null. Поскольку строку собирал через StringBuilder, перед чтением потока reader просто инициализировал пустой строкой stringBuilder.append(""); так что он null точно не вернет. А вот NullPointerException как раз, если в конструктор передать null. Так что пришлось ставить входной контроль. Ну никто не обещал сладкой жизни, пора привыкать думать за себя и за того парня, а если слишком буквально понимать условия далеко не уедешь.
Антон Никольский33 уровень, Москва
16 января, 16:56
Реальное условие этой задачи: 1) Дешифровка осуществляется путем простого прибавления key к коду ЛЮБОГО символа (а вовсе не сдвигом по алфавиту, как вы подумали). 2) Если на вход в поле reader подается null, то на выходе должна быть пустая строка.
Денис Кайдунов36 уровень, Гомель
17 января, 14:45
сдвиг по алфавиту реально достигается просто прибавлением key? А не побитовым сдвигом , как наверное вы подумали
Роман25 уровень, Новосибирск
8 мая, 03:22
для ключей [-255; 255] лучше не просто symb + key, а (symb + 256 + key) % 256
Cezer31 уровень
1 января, 21:15
Прошло с проверкой входящих и исходящих данных на null и "" соответственно!
Valeriy26 уровень
5 декабря 2017, 20:53
пора, пора нам быть умней и наивно не доверять условию задачи. Кажется над нами просто издеваются