Разбиваю считанную строку на массив. Но никак не могу избавиться от "\n" символа. В блокноте его не видно. А попытки найти в StringBuilder индекс с таким элементом, безрезультатны.....Искал и в таком виде: readStr.indexOf ("\n"), и в таком: readStr.indexOf ("\"). Если из файла читать одной строкой, то работает корректно. (закоментил код для проверки на компе, а тот, что между символами =======, это для валидатора.) А валидатор скорей всего подает на вход вайл именно с переносом строки. ХЕЕЛЛЛП!
package com.javarush.task.task22.task2207;
import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/*
Обращенные слова
*/
public class Solution {
public static List<Pair> result = new LinkedList<>();
public static void main(String[] args) throws IOException {
BufferedReader readerIn =new BufferedReader(new InputStreamReader(System.in));
File file = new File(readerIn.readLine());
readerIn.close();
// =========================================
/* String file = "E:/ProgJavaRush/MyFile.txt";
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("рот тор торт о\nо тот тот тот");
fileWriter.flush();
fileWriter.close();*/
//===========================================
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
StringBuilder readStr = new StringBuilder();
while (reader.ready()) {
readStr.append(reader.readLine());
}
reader.close();
// System.out.println(readStr);
String[] stringsForString = readStr.toString().split(" ");
String[] stringsForStringReverse = new String[stringsForString.length];
for (int i = 0; i < stringsForString.length; i++) {
StringBuilder st = new StringBuilder(stringsForString[i]);
stringsForStringReverse[i] = st.reverse().toString();
}
boolean coincidence = false;
for (int i = 0; i < stringsForString.length; i++) {
for (int j = i + 1; j < stringsForString.length - 1; j++) {
// System.out.println(stringsForString[i] + " " + stringsForStringReverse[j]);
if (stringsForString[i].equals(stringsForStringReverse[j])) {
coincidence = true;
Pair pair = new Pair();
pair.first = stringsForString[j];
pair.second = stringsForString[i];
Solution.result.add(pair);
}
}
if (coincidence) {
coincidence = false;
i++;
}
}
for (Pair pair : result) {
System.out.println(pair);
}
}
public static class Pair {
String first;
String second;
public Pair() {
}
@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;
}
}
}