В чём проблема? Java

После того, как я ввёл значение, получил такое сообщение:"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 55 out of bounds for length 55 at programm.main(programm.java:12)"

    import java.util.Scanner;
    public class programm
     {
       public static void main (String[] args)
       {
            int j, i;
          Scanner sc = new Scanner(System.in);
          int n = sc.nextInt();
          int[] a = new int[n];
          for (i = 0; i <= n; i++)
           {
            a[i] = i + 1;
           }
          System.out.println(a);
          i = 0;
          while (i <= n-1)
           {
               if (a[i] != 0)
               {
            j = i + i;
            while (j<=n)
            {
                a[j] = 0;
                j += i;
            }
        }
        else
        {
            i += 1;
        }
    }
   System.out.println(a);
}

}


Ответы (1 шт):

Автор решения: Revasha

Проблема в этом цикле

  for (i = 0; i <= n; i++)
           {
            a[i] = i + 1;
           }

Индекс массива начинается с 0, по условию у вас <= n, значит, превышена размерность Поэтому его нужно просто заменить на i < n

Тоже самое касается циклов while (i <= n-1) и while (j<=n), нужно заменить на <

→ Ссылка