for each循环系统报错,求解惑?

public class Test1
{
public static void main(String[] args)
{
int[] a = {1,2,3,4,5};

    for(int x:a)
    {
        System.out.println(x);
        a[x] = x + 2;
    }
    for(int y:a)
    {
        System.out.println(y);
    }
}

}
这个为啥会报错啊?问题出在了哪啊,我感觉逻辑没错啊

for each循环会取出集合中的元素,你凭什么使用取出的元素作为下标?这也是for...each循环简化下标访问之后带来的一个问题,你可以遍历一个集合的元素,但很难再遍历的过程中对其修改
---------------------更新---------------------
补充一点,你代码的问题主要在于数组初始化就5个元素,a的下标最大是4,而你在访问到最后一个元素5是调用了a[5],所以会报错

a[x] = x + 2; 这一句删除掉