Вот такая вот шляпа,сижу гадаю что не так. Каждую ячейку массива он считает, и правильно считает , тобишь : масив[i] = i+1; все верно выводит, но после вывода ,я так понимаю, он продолжает присваивать ячейкам значения. После масив [9] = 10, выскакивает ошибка, мол Жека ты чето не то делаешь, ищи ошибку
public class Solution {
    public static void main(String[] args) {
        int[] numbers = new int[10];

        for (int i=0; i < numbers.length; i++) { // пробывал менять length на i < 10 , толку нет.
            numbers[i] = (i+1); // здесь выдает ошибку, если убрать +1 , то все норм, но мне нужно чтобы масив[9] = 10. Можете объяснить,почему не пропускает
            System.out.println("Массив " + i + " равен " + numbers[i]);
        }
        int proiz = 1;
        for (int i1:numbers){
            proiz = proiz * numbers[i1];
        }
        System.out.println(proiz);

    }
}
Сама ошибка выглядит следующим образом:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
	at com.javarush.task.task03.task0308.Solution.main(Solution.java:17)