JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Вывод программы соответствует эталонному. Валидатор не пр...
GvardeeZZZ
41 уровень
  • 19.12.2021
  • 270просмотров
  • 5комментариев

Вывод программы соответствует эталонному. Валидатор не пропускает по последнему пункту. Что не так?

Вопрос по задаче Обращенные слова
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 java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; /* Обращенные слова */ public class Solution { public static List<Pair> result = new LinkedList<>(); public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String fileName = reader.readLine(); reader.close(); FileReader fr = new FileReader(fileName); BufferedReader br = new BufferedReader(fr); StringBuilder s = new StringBuilder(); while(br.ready()){ s.append(br.readLine()); s.append(" "); } String []mas = s.toString().split(" "); br.close(); Pair pair = null; for (int i = 0; i < mas.length-1; i++) { for (int j =i+ 1; j < mas.length ; j++) { String st = new StringBuilder(mas[j]).reverse().toString(); if(st.equals(mas[i])) pair = new Pair(mas[i],mas[j]); if(!result.contains(pair)){result.add(pair);} } } for(Pair p:result){System.out.println(p.toString());} } public static class Pair { String first; String second; public Pair() { } public Pair(String string, String second) { this.first = string; this.second = second; } @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
Комментарии (5)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
GvardeeZZZ
Уровень 41
19 декабря 2021, 17:01
Посмотрел нужный вывод,поэтому решил отбросить неуникальные пары.Видимо,надо проще к этому относиться)
0
BogarD
Уровень 35
19 декабря 2021, 12:38
Так как "тот" у тебя всего 3, поэтому и анаграмм у тебя одна (первые два совпадают, третьему не с кем сравнивать). Но, если у тебя "тот" будет 4, тогда анаграмм будет уже 2. Пример:
рот тор торт о
о тот тот тот тот
Вывод
рот тор
о о
тот тот
тот тот
А у тебя отбрасываются все одинаковые анаграммы (пары).
0
GvardeeZZZ
Уровень 41
19 декабря 2021, 10:50
Вывод: рот тор о о тот тот
0
GvardeeZZZ
Уровень 41
19 декабря 2021, 10:50
так и выводится, собственно
0
KIRAРазработчик в prosv.ruExpert
19 декабря 2021, 10:41
рот тор тот о о тот тот тот Должно получиться рот тор тот тот тот тот о о
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush