ВЫВОД
Мельбурн Нью-Йорк Киев Вена Амстердам
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
/*
В методе main считай с консоли имя файла, который содержит слова, разделенные пробелом.
В методе getLine используя StringBuilder расставь все слова в таком порядке, чтобы последняя буква данного слова
совпадала с первой буквой следующего не учитывая регистр.
Каждое слово должно участвовать 1 раз.
Метод getLine должен возвращать любой вариант.
Слова разделять пробелом.
Вывести полученную строку на экран.
Пример тела входного файла:
Киев Нью-Йорк Амстердам Вена Мельбурн
Результат:
Амстердам Мельбурн Нью-Йорк Киев Вена
ребования:
1. Метод main должен считывать имя файла с клавиатуры.
2. В методе getLine должен быть использован StringBuilder
3. Метод getLine должен возвращать пустую строку(пустой StringBuilder) в случае если ему не были переданы параметры(слова).
4. Все слова переданные в метод getLine должны быть включены в результирующую строку, если это возможно.
5. Вывод на экран должен соответствовать условию задачи.
6. Метод getLine не должен изменять переданные ему параметры(слова).
*/
public class Solution {
public static void main(String[] args) throws IOException {
try (BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( System.in ));
BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( bufferedReader.readLine() )) ) ){
String s;
StringBuilder stringBuilder = new StringBuilder( );
while ((s = reader.readLine())!=null){
stringBuilder = stringBuilder.append( s);
}
}
//...
StringBuilder result = getLine("Киев Нью-Йорк Амстердам Вена Мельбурн");
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if(words == null || words.length == 0) return new StringBuilder();
ArrayList<String> stringSet = new ArrayList<>( );
String str;
for (String s: words) {
str = s;
stringSet.addAll(Arrays.asList((str.split(" "))));
}
StringBuilder stringBuilder = new StringBuilder( stringSet.get( 0) );
ArrayList<Integer> conte = new ArrayList<>( );
for (int x = 0; x<stringSet.size();x++){
for (int y = 0;y<stringSet.size();y++){
char l1 = stringBuilder.toString().charAt( stringBuilder.length()-1 );
char l2 = stringSet.get( y ).charAt(0);
if (conte.contains( y)){
}else {
if (Character.toUpperCase(l1) == Character.toUpperCase(l2)){
stringBuilder.append( " " ).append( stringSet.get( y ) );
conte.add( y );
}else if (Character.toUpperCase(stringBuilder.toString().charAt( 0)) == Character.toUpperCase(stringSet.get( y ).charAt(stringSet.get( y ).length()-1))) {
stringBuilder.insert( 0,stringSet.get( y ) ).insert( stringSet.get( y ).length(), " ");
conte.add( y );
}
}
}
}
return stringBuilder;
}
}