i want to find error in this code package com.example.test;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class MainActivity extends AppCompatActivity  {

    private int[] cardImages = {R.drawable.photo1, R.drawable.photo2, R.drawable.photo3, R.drawable.photo4};
    private ImageButton[] buttons; // Array to store buttons representing cards
    List<Integer> buttonPositions = new ArrayList<>();
    private int[] cardStates = {1, 2, 3}; // Array to store the state of each card (e.g., 1=face up, 2=face down, .3=matched)


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        buttons = new ImageButton[8];
        // Populate the arrays with card images and button views
        for (int i = 0; i < 8; i++) {
            String buttonsId = "Button" + String.valueOf(i);
            int rId = getResources().getIdentifier(buttonsId,"id",null);
            buttons[i] = findViewById(rId);
            buttons[i].setOnClickListener(cardClickListener);
            cardStates[i] = 2;
            buttonPositions.add(i);
        }
        int imageIndex = 0;
        Collections.shuffle(buttonPositions, new Random());
        for (int i = 0; i < buttons.length; i++) {
            ImageButton button = buttons[i];
            button.setImageResource(cardImages[imageIndex]);
            imageIndex++;
            if (imageIndex >= cardImages.length-1) {
                imageIndex = 0;
            }
        }
    }


    private View.OnClickListener cardClickListener = new View.OnClickListener() {
        @Override


        public void onClick(View v) {


            ImageButton selectedImageButton = (ImageButton) v;
            int selectedCardIndex = Arrays.asList(buttons).indexOf(selectedImageButton);

            if (cardStates[selectedCardIndex] == 2) {
                cardStates[selectedCardIndex] = 1;

                selectedImageButton.setImageResource(cardImages[selectedCardIndex]);

                if (isTwoCardsFaceUp()) {
                    int firstCardIndex = getFirstCardIndex();
                    int secondCardIndex = getSecondCardIndex();

                    if (cardImages[firstCardIndex] == cardImages[secondCardIndex]) {
                        cardStates[firstCardIndex] = 3;
                        cardStates[secondCardIndex] = 3;
                    } else {
                        cardStates[firstCardIndex] = 2;
                        cardStates[secondCardIndex] = 2;
                        buttons[firstCardIndex].setBackgroundResource(R.drawable.photo5);
                        buttons[secondCardIndex].setBackgroundResource(R.drawable.photo5);
                    }
                }
            }
        }
    };

    private boolean isTwoCardsFaceUp() {
        int count = 0;
        for (int state : cardStates) {
            if (state == 1) {
                count++;
            }
        }
        return count == 2;
    }

    private int getFirstCardIndex() {
        for (int i = 0; i < 8; i++) {
            if (cardStates[i] == 1) {
                return i;
            }
        }
        return -1;
    }

    private int getSecondCardIndex() {
        for (int i = 0; i < 8; i++) {
            if (cardStates[i] == 1 && i != getFirstCardIndex()) {
                return i;
            }
        }
        return -1;
    }

}