Потому что в конструкторе:
ArrayList<Integer> init = new ArrayList<>();
while (c < lenght){
matriz.add(init);
c +=1 ;
}
Вы продолжаете добавлять ссылку на то же самое ArrayList
во всех индексах matriz
.Поэтому, когда вы звоните:
matriz.get(index).add(0);
Вы добавите его к init
, что будет отражено по всему mariz
Вместо этого вы можете получить что-то подобное в конструкторе:
while (c < lenght){
matriz.add(new ArrayList<Integer>());
c +=1 ;
}