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

Что он хочет?

Вопрос по задаче Составить цепочку слов
Java Multithreading,  2 уровень,  9 лекция
Обсуждается


В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом.
В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр.
Каждое слово должно участвовать 1 раз.
Считай, что абсолютно все слова из исходного списка могут (и должны!) быть включены в результат (лишних слов нет).
Метод getLine должен возвращать любой правильный вариант при наличии нескольких таковых (см. пример).
Слова разделять пробелом.
Вывести полученную строку на экран.

Пример тела входного файла:
Киев Нью-Йорк Амстердам Вена Мельбурн

Результат:
Амстердам Мельбурн Нью-Йорк Киев Вена
или
Вена Амстердам Мельбурн Нью-Йорк Киев
или
Мельбурн Нью-Йорк Киев Вена Амстердам
и т.п.

Требования:
  • Метод main должен считывать имя файла с клавиатуры.
  • В классе Solution не должно быть статических полей.
  • В методе getLine должен быть использован StringBuilder.
  • Метод getLine должен возвращать пустую строку (пустой StringBuilder) в случае если ему не были переданы параметры (слова).
  • Метод getLine не должен изменять переданные ему параметры (слова).
  • Все слова переданные в метод getLine должны быть включены в результирующую строку.
  • Вывод на экран должен соответствовать условию задачи.
....
package com.javarush.task.task22.task2209; import java.util.*; import java.io.*; /* В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом. В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова совпадала с первой буквой следующего не учитывая регистр. Каждое слово должно участвовать 1 раз.C:\Users\Oleh_Kosylo\Desktop\Новый текстовый документ (4).txt Метод getLine должен возвращать любой вариант. Слова разделять пробелом. Вывести полученную строку на экран. C:\Users\Oleh_Kosylo\Desktop\Новый текстовый документ (4).txt */ public class Solution { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String FileName = reader.readLine(); FileReader file = new FileReader(FileName); String TextOrFile = ""; int c; while((c=file.read())!=-1){ TextOrFile = TextOrFile + (char) c; } StringBuilder result = getLine(TextOrFile.split(" ")); System.out.println(result.toString()); } public static StringBuilder getLine(String... words) { if(words.length == 0) return new StringBuilder(); String[] array = words; ArrayList<String> list = new ArrayList<>(); for(int i=0;i<array.length;i++){ list.add(array[i]); Collections.sort(list); } ArrayList<String> list2 = new ArrayList<>(); list2.add(list.get(0)); list.remove(0); for(int j=0;j<list.size();j++) { for (int i = 0; i < list.size(); i++) { char Start2Char = list.get(i).toLowerCase().charAt(0); // 1 int index = list2.size() - 1; int length = list2.get(index).length() - 1; char StartChar = list2.get(index).toLowerCase().charAt(length); // last if (StartChar == Start2Char) { list2.add(list.get(i)); index = list2.size() - 1; } } } LinkedHashSet<String> set = new LinkedHashSet<>(); for(String s:list2){ set.add(s); } String finalString =""; for(String s:set){ finalString = finalString.trim()+" "+s; } StringBuilder stringBuilder = new StringBuilder(finalString); return stringBuilder; }}
0
Комментарии (3)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Roman Java Developer Expert
28 марта 2019, 11:53
Попробуй файл с таким содержимым:
трюм Налет труД мармелад доМ мандарин март
0
Oleh
Уровень 27
29 марта 2019, 11:56
0
Roman Java Developer Expert
1 апреля 2019, 06:37
А остальные слова где?
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush