Есть код. В метод передается массив слов String. Задача кода - выстроить слова в таком ключе, чтобы последняя буква предыдущего слова совпадала с первой буквой следующего слова. На входе:
Редька Кокос Сидр Апельсин
На выходе:
Кокос Сидр Редька Апельсин
Первым словом берется слово, первая буква которого не имеет совпадений с последними буквами других слов. Проблема заключается в том, что при определении первой буквы слова, для первого слова из массива первый символ стоит под номером 1 (charAt(1)), а первые символы других слов под номером 0 (charAt(0)).
public class Solution {
public static void main(String[] args) throws IOException {
ArrayList<String> array = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String name=reader.readLine();
reader.close();
BufferedReader reader2 = new BufferedReader(new FileReader(name));
while (reader2.ready())
{
String str= reader2.readLine();
String[] buf=str.split(" ");
for (String e:buf)
{
array.add(e);
}
}
reader2.close();
String[] itog = new String[array.size()];
for (int i=0;i<array.size();i++)
{
itog[i]=array.get(i);
System.out.println(itog[i]);
}
StringBuilder result = getLine(itog);
// System.out.println(result.toString());
}
public static StringBuilder getLine(String... words)
{
if (words==null) return null;
String firstWord="";
for (int i=0;i<words.length-1;i++)
{
int count=0;
for (int j=i+1;j<words.length;j++)
{
if (words[i].toLowerCase().charAt(1)==words[j].toLowerCase().charAt(words[j].length()-1))
count++;
System.out.println(words[i].toLowerCase().charAt(1)+" "+words[j].toLowerCase().charAt(words[j].length()-1));
}
// if (count==0) {firstWord=words[i]; break;}
}
if (firstWord.equals("")) firstWord=words[0];
System.out.println(firstWord);
return null;
}
}
Я передаю четыре слова в файле:
Редька Кокос Сидр Апельсин
Строку я сплитю по пробелу и заношу в массив строк, который передаю в метод. При обработке приведенного выше кода на выходе получаю:
Редька
Кокос
Сидр
Апельсин
р с
р р
р н
о р
о н
и н
То есть для первого слова из массива на позиции 1 находится первая буква слова (для Редьки это буква "р"), а для всех остальных слов на позиции 1 находятся вторые буквы ("о" для кокоса и т.д.). Почему так происходит (почему первые символы для всех слов не находятся на одной и той же позиции?).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу первую игру на JavaС помощью GridLayout создал поле 3 на 3, массив String со значениями O и X
Хочу добавить в свою приложуху расписание парВ нашем ВУЗе максимум 5 пар в день, но не факт что таких пар 5 и не факт что в этот день есть пары
Есть ли возможность сделать это без перечисления? Просто с помощью какого-нибудь приведения