Работа с текстом, не может вывести в консоль больше 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);
                }

            }
        }

    }
→ Ссылка