Problema com .lenght em matriz JAVA

Boa noite!

Estou fazendo um projeto de POTA para semana que vem, porem tenho que organizar os dados dentro da matriz, e estou utilizando o metodo de organização COUNT, porém estou tendo um erro muito chato de java.lang.ArrayIndexOutOfBoundsException. Segui esse link [Problema com .length em matriz [resolvido]] para tentar corrigir o erro, porém ele continua ali firme e forte :[

Esse é o meu código, e ele só acontece quando vai ler o quinto for (ainda não aprendi a debugar que nem gente, então ainda uso msgs hehe)

import java.util.Random;

public class Principal {

public static void main(String[] args) {
    int matriz[][] = new int[500][50];
    CountSort c = new CountSort();
    Random rand = new Random();

    for (int a = 0; a < 500; a++) {
        for (int b = 0; b < 50; b++) {
            matriz[a][b] = rand.nextInt(10000);
        }
    }

    for (int a = 0; a < 500; a++) {
        for (int b = 0; b < 50; b++) {
            System.out.print(matriz[a][b] + " ");
        }
        System.out.println("");
    }
    try {
        count(matriz, 0, 0);
    } catch (Exception e) {
        System.out.println("Erro " + e);
    }
}

public static void count(int[][] vetor, int m, int n) {
    int counter[][] = new int[m + 1][n + 1];
    for (int i = 0; i < counter[0].length; i++) {
        System.out.println("Rodou 1 for");
        for (int ix = 0; ix < counter[0].length; ix++) {
            System.out.println("Rodou 2 for");
            counter[i][ix] = 0;
        }
    }
    for (int i = 0; i < vetor.length; i++) {
        System.out.println("Rodou 3 for");
        for (int ix = 0; ix < vetor[0].length; ix++) {
            System.out.println("Rodou 4 for");
            counter[vetor[i][ix]][vetor[i][ix]]++;
        }
    }

    int ndx = 0;
    int mdx = 0;
    
    for (int i = 0; i < counter.length; i++) {
        System.out.println("Rodou 5 for");
        for (int ix = 0; ix < counter[0].length; ix++) {
            System.out.println("Rodou 6 for");
            while (counter[i][ix] > 0) {
                vetor[ndx++][mdx++] = i;
                vetor[ndx++][mdx++] = ix;
                counter[i][ix]--;
            }
        }
    }
}

}

Agradeço desde já qualquer luz que vocês possam me dar!

Na verdade ele não dá erro no quinto for, mas no quarto. Você tem uma ilusão que o quarto for foi percorrido porque colocou o System.out.print antes do comando/linha com erro.

System.out.println(“Rodou 4 for”);
counter[vetor[i][ix]][vetor[i][ix]]++;

Remova o quinto for, e o erro continuará. Coloque a mensagem depois do comando/linha e você vai ver que ele não exibe a mensagem Rodou 4 for.

O erro está aqui > counter[vetor[i][ix]][vetor[i][ix]]++;

Você está tentando dimensionar ou transformar uma matriz bidimensional, matriz [altura][largura], em uma que vai alem…

Remova o 4 for, só para você ter certeza. Vai exibir
Rodou 1 for,
Rodou 2 for,
Rodou 3 for,

Rodou 5 for,
Rodou 6 for.

Então Jonas, como tentei adaptar o codigo do Count que lê vetor, para a leitura de matriz eu realmente posso ter errado feiamente, porém não soube como fazer. Esse é o cod original

public static void count(int[] vetor, int m) {
int counter[] = new int[m + 1];
for (int i = 0; i < counter.length; i++) {
counter[i] = 0;
}

    for (int i = 0; i < vetor.length; i++) {
        counter[vetor[i]]++; // Linha que tentei adaptar mas dá erro
    }

    int ndx = 0;
    for (int i = 0; i < counter.length; i++) {
        while (counter[i] > 0) {
            vetor[ndx++] = i;
            counter[i]--;
        }
    }

Como posso adaptar a organização do vetor nessa linha de codigo comentada de vetor para matriz?

Valeuuu

Qual seria mesmo a descrição do problema? Seria melhor saber detalhes para eu saber o que estou fazendo, onde pretendo chegar alterando esses vetores e matrizes.