Как исправить ошибку в коде. Index 6 out of bounds for length 6

import java.util.*;

public class Main
{
    public static void main(String[] args) {
        int[] arr = {1,0,3,3,3,5,12,3,0,7}; // length = 10
        int n = 3;
        int count = 0;
        for(int i = 0; i < arr.length; i++){
            if(arr[i] == n){
                count++;
            }
          }
            
          

    int[] arr2 = new int[arr.length - count]; // length = 6
    
                for(int i = 0; i < arr.length; i++){
                    if(arr[i] != n){
                        arr2[i] = arr[i];
                    }
                }
               System.out.println(Arrays.toString(arr2));
            }
    }

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

Автор решения: Алексей Шиманский

Тут задаётся одна длина массива

new int[arr.length - count];

а тут цикл совершенно по другой:

i < arr.length;
→ Ссылка
Автор решения: Виталий Злобин
for(int i = 0; i < arr.length; i++)

замени на

for(int i = 0; i < arr2.length; i++)
→ Ссылка