Почему при j = 5 переменная index получает нулевое значение?
package com.javarush.task.task19.task1927;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
/*
Контекстная реклама
*/
public class Solution {
public static TestString testString = new TestString();
public static void main(String[] args) throws Exception {
//сохраняем исходный System.out
PrintStream cons = System.out;
//создание объекта класса потока вывода массива
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//Инициализируем новый объект класса PrintStream и подменяем им System.out
PrintStream ps = new PrintStream(bos);
System.setOut(ps);
//получаем в ps поток вывода метода printSomething
testString.printSomething();
//полученный поток вывода (bos) переводим в строковый массив,кол-во элементов
//считается по разделителю lineSeparator
String[] str = bos.toString().split(System.lineSeparator());
StringBuilder sb = new StringBuilder(bos.toString());
//определяем строку которую будем подставлять в str
String context = "JavaRush - курсы Java онлайн" + System.lineSeparator();
for (int i = 0, j = 0; j < str.length ; j++) {
if (i != 0 && (j + 1) % 3 == 0) {
int index = sb.indexOf(str[j]);
sb.insert(index, context);
}
else i ++;
}
bos.reset();
bos.write(sb.toString().getBytes());
System.setOut(cons);
ps.close();
System.out.println(bos);
}
public static class TestString {
public void printSomething() {
System.out.println("first");
System.out.println("second");
System.out.println("third");
System.out.println("fourth");
System.out.println("fifth");
System.out.println("first");
System.out.println("second");
System.out.println("third");
System.out.println("fourth");
System.out.println("fifth");
}
}
}