JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Все работает по условию, но не проходит по пятому условию...
Денис
41 уровень
  • 19.05.2020
  • 334просмотров
  • 3комментариев

Все работает по условию, но не проходит по пятому условию задачи.

Вопрос по задаче Обращенные слова
Java Multithreading,  2 уровень,  9 лекция
Решен


В методе main с консоли считать имя файла, который содержит слова, разделенные пробелами.
Найти в тексте все пары слов, которые являются обращением друг друга. Добавить их в result.
Использовать StringBuilder.
Кодировка файла - UTF-8.

Пример содержимого файла
рот тор торт о
о тот тот тот

Вывод:
рот тор
о о
тот тот

Требования:
  • Метод main должен считывать имя файла с клавиатуры.
  • В методе main должен быть использован StringBuilder.
  • В классе Solution должен содержаться вложенный класс Pair с методами equals, hashCode и toString. Удалять или изменять эти методы нельзя.
  • В классе Pair должен быть объявлен конструктор без параметров (или конструктор по умолчанию).
  • Список result должен быть заполнен корректными парами согласно условию задачи.
package com.javarush.task.task22.task2207; import org.w3c.dom.ls.LSOutput; import java.io.*; import java.util.*; /* Обращенные слова 1. Метод main должен считывать имя файла с клавиатуры. 2. В методе main должен быть использован StringBuilder. 3. В классе Solution должен содержаться вложенный класс Pair с методами equals, hashCode и toString. Удалять или изменять эти методы нельзя. 4. В классе Pair должен быть объявлен конструктор без параметров (или конструктор по умолчанию). 5. Список result должен быть заполнен корректными парами согласно условию задачи. */ public class Solution { public static List<Pair> result = new LinkedList<>(); public static void main(String[] args) throws IOException { BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); BufferedReader file = new BufferedReader(new FileReader(read.readLine())); String str; StringBuilder sb = new StringBuilder(); ArrayList<String> set = new ArrayList<>(); while ((str = file.readLine()) != null) { sb.append(str); sb.append(" "); } read.close(); file.close(); sb.deleteCharAt(sb.indexOf("\uFEFF")); String strB = sb.toString(); String[] setString = strB.split(" "); set.addAll(Arrays.asList(setString)); System.out.println(set); for (int i = 0; i < set.size(); i++) { String s = set.get(i); for (int j = i + 1; j < set.size(); j++) { StringBuilder sbb = new StringBuilder(set.get(j)); sbb.reverse(); String strr = sbb.toString(); if (s.equals(strr)) { Pair pers = new Pair(); pers.first = s; pers.second = set.get(j); if (! result.contains(pers)) result.add(pers); } } } for (Pair p : result) { System.out.println(p.first + " " + p.second); } } public static class Pair { String first; String second; Pair() { } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Pair pair = (Pair) o; if (first != null ? !first.equals(pair.first) : pair.first != null) return false; return second != null ? second.equals(pair.second) : pair.second == null; } @Override public int hashCode() { int result = first != null ? first.hashCode() : 0; result = 31 * result + (second != null ? second.hashCode() : 0); return result; } @Override public String toString() { return first == null && second == null ? "" : first == null ? second : second == null ? first : first.compareTo(second) < 0 ? first + " " + second : second + " " + first; } } }
0
Комментарии (3)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Java Developer
19 мая 2020, 15:38
Полностью переписал код на другой (просматривал решения других) и валидатор принял только после удаления строки 34 sb.deleteCharAt(sb.indexOf("\uFEFF")); При этом программа работает не правильно, но валидатор пропускает.
0
JustinianJudge в Mega City OneMaster
19 мая 2020, 16:08полезный
проблема с uFEFF есть на твоем компьютере, поскольку у тебя виндовс. На сервере юникс-подобная система, там твой код не срабатывал корректно, как и у других пользователей на линуксе/макос. Советую работать с файлами в идее и настроить кодировку UTF-8, использование NO-BOM и тд, чтобы быть на одной ноге с юникс-системами, на которых и будут крутится программы, которые мы пишем
+1
Денис Java Developer
19 мая 2020, 16:10
Ok
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush