Правильно ли я решил поставленную задачу?
Формулировка задачи была следующая:
Решение автора было таким:
Я решил задачу немного другими способами
Способ 1 :
Способ 2:
Я первый раз пользуюсь сайтом, если криво составил вопрос - простите и поправьте.
Также, принимаю замечания по оформлению кода. Спасибо огромное, заранее!)
Ответы (1 шт):
Оба ваших варианта используют один подход: преобразовать объекты StringBuilder в строки и сравнивать уже их с помощью доступного метода equals. Также вариант решения, но оставлю пару комментариев.
Первый из предложенных вами вариант работает неверно. Например
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. Т.к при сравнении отбрасывается последний символ.
Метод
equalsвозвращаетbooleanтип. Поэтому возвращать в тернарном операторе true, когда выражение истино иfalse, когда ложно - лишнее. Результат метода equals можно сразу записать в переменнуюresult;boolean result = sb1.toString().equals(sb2.toString());Выводить в консоль возвращаемое значение наверное не стоит. Лучше получить его в main методе и уже там его вывести.
Исходя из второго и третьего пункта - можно убрать переменную
resultи сразу вернуть результат работыequalsreturn sb1.toString().equals(sb2.toString());
Про именование. Если посмотреть пункт 5 Naming из Google Java Style Guide, то для имени пакета следует использовать только строчные буквы (course.lesson17), а класс начинать с прописной (Homework).