Похоже, что вы зацикливаетесь на всех элементах вреда. Y (y) .dni и внутри цикла, который вы делаете
if ((listaSwiat != null && listaSwiat.get(x) != null)
|| harm.get(y).getDzienTygodnia(x + 1).equals("Nd"))
В последний раз в цикле х = 28 и размер29. Но вы делаете
harm.get(y).getDzienTygodnia(x + 1)
Таким образом, вы получаете элемент в точке 29, который находится за пределами, потому что, как и в другом ответе, указанном, индекс начинается с 0, а не с 1. Вы должны добавить проверку здесьпрежде чем проверять следующий индекс, проверьте, есть ли у вас последний индекс.