1.Решил проблему с пустым символом, это связано с кодировкой стандартного блокнота, он добавляет что то связанное с BOM, по рекомендации установил notepad ++, и там установил кодировку UTF-8
2. При наличии нескольких почти одинаковых слова(например "труд" и "трам") в TreeMap отсортируется и выведется трам
3. По поводу сортировки массива, если слова с маленькой и большой буквы приоритет имеет большая буква нежели та которая идет по алфавиту (Здесь нужно свою сортировку прописывать?)
непроходит по последнему пункту
плиз help
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) {
//...
StringBuilder sb = new StringBuilder();
String[] list=null;
try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader readFile = new BufferedReader(new FileReader(reader.readLine()))){
while(readFile.ready()){
sb.append(readFile.readLine());
}
list = sb.toString().split(" ");
}
catch(IOException e){
e.printStackTrace();
}
StringBuilder result = getLine(list);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if(words==null) return new StringBuilder();
String[] list = words.clone();
Arrays.sort(list);
for(int i=0;i<list.length;i++){
String endWord = list[i].substring(list[i].length()-1).toLowerCase();
char chars = endWord.charAt(0);
if(i!=list.length-1){
String replaceWord = list[i+1];
TreeMap<Integer,String> copy = new TreeMap<>();
boolean isNoWord=true;
for(int j=i+1;j<list.length;j++){
String pol = list[j];
char[] sss = list[j].toCharArray();
if(list[j].toLowerCase().startsWith(endWord)){
copy.put(j,list[j]);
isNoWord=false;
}
}
if(isNoWord){
for(char a=chars; a<'я';a++){
for(int j=i+1;j<list.length;j++){
if(list[j].toLowerCase().startsWith(endWord)){
list[i+1]=list[j];
list[j]=replaceWord;
isNoWord=false;
}
}
}
}
else {
for(Map.Entry<Integer,String> pair:copy.entrySet()){
list[i+1]=pair.getValue();
list[pair.getKey()]=replaceWord;
break;
}
}
}
}
StringBuilder wordsAtoZ = new StringBuilder();
for(int k=0;k<list.length;k++){
wordsAtoZ.append(list[k]);
wordsAtoZ.append(" ");
}
return wordsAtoZ;
}
}