Retornar qtde de elemntos entre dois valores de uma matriz

Objetivo: Faça um algoritmo que carregue uma matriz de números inteiros, calcule e retorne a quantidade de
elementos entre dois valores x e y fornecidos sendo que x é menor ou igual a y.

Então utilizando um while para restringir x e y fiz tal solução que obtive erro ao executar:

public class Matriz {

    public static int qtdeElementos(int[][] matriz, int x, int y) {

        int i;
        int j;
        int n;
        int m;
        int l;
        int c;
        int elem;
        int elem1;
        int qtde;


        i = 0;
        qtde = 0;
        j = 0;
        l = 0;
        c = 0;
        int[][] mat1 = new int[i][j];
        //int[][] mat2 = new int[l][c];
        n = matriz.length;
        m = matriz[0].length;


        while (x < y || x == y) {
            for (i = 0; i < n; i++) {
                for (j = 0; j < m; j++) {
                    while ((x == matriz[i][j] || x < matriz[i][j]) &&
                            (y > matriz[i][j] || y == matriz[i][j])) {

                        mat1[l][c] = matriz[i][j];
                        elem = mat1.length;
                        elem1 = mat1[0].length;

                        qtde = ((elem * elem1) - 2);
                    }
                /*if (x == matriz[i][j]){
                mat1[i][j] = matriz[i][j];
                }
                if (y == matriz[i][j]){
                mat2[l][c] = matriz[i][j];
                }*/
                }
            }
        }
        return qtde;
    }
    public static void main (String[]args){
        int[][] matriz = {{1,2,3},
                         {4,5,6},
                         {7,8,9}};
        int x = 2;
        int y = 6;

        int resultado;

        resultado = Matriz.qtdeElementos(matriz, x, y);
        System.out.println("A quantidade de elementos é:" + resultado);
    }
}

Se puderem apontar algum erro ou sugestão de uma possível solução para o objetivo acima, agradeço.

Desde já agradeço. Abraços.

Alguem pra ajudar?

pq sua matriz é bi-dimensional ?? não seia uma sequencia de numeros ? então a matriz deveria ser uni-direcional…

ai seria bom vc ordenar a matriz, (para garantir q os numeros estão em sequencia "java.util.Arrays.sort(matriz);")

ai daria pra fazer assim

[code]if (x > matriz[matriz.langth] ) return 0; //apenas para otimizar, se x for maior que o ultimo numero então entre x e y existem 0.
else if (y < matriz[0] ) return 0; //otimizar, se y for menor que o primeiro numero então entre x e y exitem 0.

int posicaoX = Arrays.binarySearch(matriz,x);
int posicaoY = Arrays.binarySearch(matriz,y);

if (posicaoX >= 0 ) {
if(posicaoY >= 0 )) //se ele econtrou a posição dos 2, retorno a diferneça entre as posição
return y-x;
else { //se ele so encontrou o x então
int count = 0;
for(int i = x; i < matriz.length; i++) {
if (matriz[i] > y)
return count; //se xegou no maior, retorna o contador
else
count++; //se não acrecenta mais um numero a contar
}
}
} else if (posicaoY >= 0) { //caso ele saiba a posição do y
int count = 0;
for (int i = y; i >=0; i–)
if (matriz[i] < x)
return count;
else
count++;
}

//caso vc não conheça nem X nem Y então vc precisa começar do inicio o contador

int count = 0;
for(int i = 0; i < matriz.length; i++) {
if (matriz[i] > y)
break; //se passou do y, retorna o contador (por isso da um break, para retornar o contado la de fora)
if (matriz[i] > x)
count++; //se já maior que x, aumenta em 1 o contador
}
return count;[/code]

boa sorte