cavolo desa mi deve essere sfuggito quel suggerimento che mi avevi dato

Cmq ora funziona bene, anzi benissimo

Lascio il codice sul forum se dovesse un giorno servire a qualcuno

codice:
public class calendario{

    public static void main(String[] args){

        // creo la matrice con il numero di righe e colonne definite

        int matrice[][] = new int[5][8];

        int contatore=0;

        do{

        matrice=creaMatrice(matrice);

        contatore++;

        } while(verificaCoppie(matrice)==false);

       for(int i=0;i<matrice.length;i++){

           for(int j=0;j<matrice[0].length;j++){

              System.out.print("["+matrice[i][j]+"] ");
           }

           System.out.println();
       }

        System.out.println("\nSono stati ben provati "+contatore+" accoppiamenti");
        
    }


    public static int[][]creaMatrice(int[][]matrice){

    // cliclo l'array bidimensionale

        for (int i = 0; i < matrice.length; i++) {


            for (int j = 0; j < matrice[0].length; j++) {


            	// Inizio controllo numeri diversi per riga

            	boolean unico;

            	do

            	{
            	  unico = true;

            	  matrice[i][j] = (int)(Math.random()*8)+1;

            	  for (int x = 0; x < j; x++)

            	  {
            	    if (matrice[i][j] == matrice[i][x])

            	    {

            	      unico = false;

            	    }

            	  }

            	} while (!unico);

            }

            }

        return matrice;

    }

    //controlla che gli accoppiamenti siano tutti diversi
    public static boolean verificaCoppie(int[][]matrice2){


    	for(int i=0;i<matrice2.length-1;i++){

    		for(int j=0;j<matrice2[0].length;j+=2){

                    for(int x=i+1;x<matrice2.length;x++){

                        for(int y=0;y<matrice2[0].length;y+=2){

                                 if (matrice2[i][j] == matrice2[x][y] && matrice2[i][j + 1] == matrice2[x][y + 1] || matrice2[i][j] == matrice2[x][y + 1] && matrice2[i][j + 1] == matrice2[x][y])

                                    {
                                         return false;
                                }
                            
                        }

                    }

    		}

    	}

    	return true;
    }
}
Ti ringrazio veramente tanto per il supporto ch mi hai dato

Ora non mi resta che smanettare per creare una piccola interfaccia grafica e poi ho finito