Работа с текстом, не может вывести в консоль больше 1 строки из текстового документа Java
Выдает ошибку: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at Boss.KingZ.main(KingZ.java:20)
Что находится в текстовом документе из которого программа должна читать (синим выделено)

Сам код :
public static void main(String[] args) throws FileNotFoundException {
String lineFromFile;
String s = File.separator;
String path = s+ "Users" +s+ "Иннокентий" +s+ "eclipse-workspace" +s+ "BossCheck" +s+ "src" +s+ "Boss" +s+ "Logs.txt";
try (InputStreamReader inputStreamReader = new InputStreamReader
(new FileInputStream(path), "Windows-1251")){
try (BufferedReader bufferedReader = new BufferedReader(inputStreamReader)){
while (bufferedReader.ready()) {
lineFromFile = bufferedReader.readLine();
String[] str2 = lineFromFile.split("[CHAT]" + "был повержен за ");
str2 = str2[1].split(" ");
int time = Integer.parseInt(str2[0]);
int min = 60;
System.out.println( + time + 10*min);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();{
}
}
}
Прошу помочь, для меня этот проект как новичку очень интересен.
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Вот так попробуйте
public static void main(String[] args) throws FileNotFoundException {
String lineFromFile;
String s = File.separator;
String path = s+ "Users" +s+ "Иннокентий" +s+ "eclipse-workspace" +s+ "BossCheck" +s+ "src" +s+ "Boss" +s+ "Logs.txt";
try (InputStreamReader inputStreamReader = new InputStreamReader
(new FileInputStream(path), "Windows-1251")){
try (BufferedReader bufferedReader = new BufferedReader(inputStreamReader)){
while (bufferedReader.ready()) {
lineFromFile = bufferedReader.readLine();
if (lineFromFile)
String[] str2 = lineFromFile.split("[CHAT]");
if (str2.length > 1 && str2[1].split("был повержен за ").length > 1) {
str2 = str2[1].split("был повержен за ")[1].split(" ");
}
int time = Integer.parseInt(str2[0]);
int min = 60;
System.out.println( + time + 10*min);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();{
}
}
}
}
Автор решения: azlov
→ Ссылка
Измените кодировку и разделитель строки:
try (InputStreamReader inputStreamReader = new InputStreamReader
(new FileInputStream(path), "Windows-1251")) { // кодировка UTF-8
try (BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
while (bufferedReader.ready()) {
lineFromFile = bufferedReader.readLine();
String[] str2 = lineFromFile.split("был повержен за "); // разделяем строку
if (str2.length > 1) { // проверяем, что строка была разделена по паттерну выше
str2 = str2[1].split(" ");
int time = Integer.parseInt(str2[0]);
int min = 60;
System.out.println(+time + 10 * min);
}
}
}
}