Правильно ли я решил поставленную задачу?

Формулировка задачи была следующая:Формулировка задачи Решение автора было таким: Решение автора Я решил задачу немного другими способами Способ 1 :Решение1 Способ 2:Решение2 Я первый раз пользуюсь сайтом, если криво составил вопрос - простите и поправьте. Также, принимаю замечания по оформлению кода. Спасибо огромное, заранее!)


Ответы (1 шт):

Автор решения: siarhei987

Оба ваших варианта используют один подход: преобразовать объекты StringBuilder в строки и сравнивать уже их с помощью доступного метода equals. Также вариант решения, но оставлю пару комментариев.

  1. Первый из предложенных вами вариант работает неверно. Например

     StringBuilder kot = new StringBuilder("kot");
     StringBuilder kod = new StringBuilder("kod");
     boolean isEqual = kot.substring(0, kot.length() - 1)
         .equals(kod.substring(0, kod.length() - 1));
     System.out.println(isEqual);
    

выведит true. Т.к при сравнении отбрасывается последний символ.

  1. Метод equals возвращает boolean тип. Поэтому возвращать в тернарном операторе true, когда выражение истино и false, когда ложно - лишнее. Результат метода equals можно сразу записать в переменную result;

     boolean result = sb1.toString().equals(sb2.toString());
    
  2. Выводить в консоль возвращаемое значение наверное не стоит. Лучше получить его в main методе и уже там его вывести.

  3. Исходя из второго и третьего пункта - можно убрать переменную result и сразу вернуть результат работы equals

     return sb1.toString().equals(sb2.toString());
    

Про именование. Если посмотреть пункт 5 Naming из Google Java Style Guide, то для имени пакета следует использовать только строчные буквы (course.lesson17), а класс начинать с прописной (Homework).

→ Ссылка