how to fix the 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

    private int[] cardStates = new int[8];  // 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];


        for (int i = 0; i < 8; i++) {
            buttons[i] = findViewById(getResources().getIdentifier("card" + (i + 1), "id", getPackageName()));
            cardStates[i] = 2;
        }
        assignCardImages();
    }

    private void assignCardImages() {
        List<Integer> buttonPositions = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7));
        Collections.shuffle(buttonPositions, new Random());

        // Assign a random photo to each card button
        for (int i = 0; i < 8; i++) {
            final int index = i; // Store the index in a final variable for the click listener

            // Generate a random index to select a photo from the cardImages array
            int randomImageIndex = new Random().nextInt(cardImages.length);

            buttons[i].setImageResource(cardImages[randomImageIndex]);
        }

        // Set click listeners for each ImageButton
        for (int i = 0; i < buttons.length; i++) {
            final int index = i; // Store the index in a final variable for the click listener
            buttons[i].setOnClickListener(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;
            }
                }
            });
        }
    }



   

}