Ajuda com Matrizes - JAVA

Sou iniciante no java, tenho uma trabalho para fazer e necessita do programa percorrer todas as diagonais de uma matriz, ja tentei fazer mas não consigo, alguem pode me ajudar como fazer?

todas as diagonais no caso, a principal ae secudaria?

Posta o código que tu já fez que te ajudo sem problemas. blz

Tanto a principal e a secundaria e todas abaixo e acima delas

import java.util.Scanner;
public class ProgramaCacaPalavra {

public static void main(String[] args) {
            Scanner read = new Scanner(System.in);
            
            
            //cria uma matriz chamando a funcao recuperaMatriz() com parametros da localizacao do arquivos matriz.txt
	char[][] matriz = LeitorMatriz.recuperaMatriz("matriz.txt");	
            int p=-1;
            
            while(p!=2){
            imprimeMatriz(matriz);
            
            System.out.print("Informe qual palavra você encontrou? ");
            String palavra = read.next();
            palavra=palavra.toUpperCase();
            
                percorrerMatrizHorizontal(matriz,palavra);
                percorrerMatrizVertical(matriz, palavra);
                percorrerMatrizDiagonal(matriz, palavra);
                    System.out.print("\nDeseja executar novamente? (1-SIM / 2-NÃO) ");
                    p=read.nextInt();
                while(p!=1 && p!=2){
                    if (p!=1 && p!=2) {
                        System.out.println("Digitou errada! Digite novamente");
                        break;
                    }
                }
                
            }
               
            

}
    
    static void imprimeMatriz(char[][] matriz){
         //imprime a matriz na tela
            for (int i = 0; i < matriz.length; i++) {
                for (int j = 0; j < matriz[i].length; j++) {
                    System.out.print("");
                    System.out.print("|"+matriz[i][j]+"|");
                    
                }
                System.out.println("");
            }
            System.out.println("");
    }
    
    static void percorrerMatrizHorizontal(char[][] matriz, String palavra){
        
        String PalavraVetor="";
        
        for (int i = 0; i < matriz.length; i++) {
            PalavraVetor="";//LIMPA A VARIAVEL PARA COMEÇAR NOVAMENTE
            for (int j = 0; j < matriz[i].length; j++) {
                
                PalavraVetor=PalavraVetor+matriz[i][j];//CONCATENAÇÃO DOS CARACTERES
                
            }
            
            if (PalavraVetor.contains(palavra)) {//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
                
                String caract = palavra.substring(0,2);//PEGA OS CARACTERES ENTRE AS POSIÇÕES DEFINIDAS 
                int comeca = PalavraVetor.indexOf(caract);//PROCURA NA PALAVRAVETOR A PRIMEIRA LETRA DA PALAVRA
                int termina = (comeca+palavra.length())-1;
                System.out.format("A palavra %s, comeca na coluna %s e termina na coluna %s da linha %s \n",palavra,comeca,termina,i);
            }else{
                StringBuilder str = new StringBuilder(PalavraVetor);
                PalavraVetor=str.reverse().toString();//INVERTO A STRING COM A FUNCAO REVERSE() DO STRINGBUILDER
                if (PalavraVetor.contains(palavra)) {
                    
                    String caract = palavra.substring(0,2);//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
                    int termina = PalavraVetor.length()-PalavraVetor.indexOf(caract)-1;//PROCURA NA PALAVRAVETOR A PRIMEIRA LETRA DA PALAVRA
                    int comeca = (termina-palavra.length())+1;
                    
                    System.out.format("A palavra %s, comeca na coluna %s e termina na coluna %s da linha %s \n",palavra,comeca,termina,i);
                }
            }
            
        }
        
    }
    
    static void percorrerMatrizVertical(char[][] matriz, String palavra){
        
        String PalavraVetor="";
        
        for (int j = 0; j < matriz[0].length; j++) {
            PalavraVetor="";
            for (int i = 0; i < matriz.length; i++) {
                
                PalavraVetor=PalavraVetor+matriz[i][j];
                
            }
            
            if (PalavraVetor.contains(palavra)) {//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
                
                String caract = palavra.substring(0,2);//PEGA OS CARACTERES ENTRE AS POSIÇÕES DEFINIDAS 
                int comeca = PalavraVetor.indexOf(caract);//PROCURA NA PALAVRAVETOR AS PRIMEIRAS LETRAS DA PALAVRA
                int termina = (comeca+palavra.length())-1;
                System.out.format("A palavra %s, comeca na linha %s e termina na linha %s da coluna %s \n",palavra,comeca,termina,j);
            }else{
                StringBuilder str = new StringBuilder(PalavraVetor);
                PalavraVetor=str.reverse().toString();//INVERTO A STRING COM A FUNCAO REVERSE() DO STRINGBUILDER
                if (PalavraVetor.contains(palavra)) {//VERIFICA SE A PALAVRA INFORMADA PELO USUARIO EXISTE NA STRING
                    
                    String caract = palavra.substring(0,2);//INVERTO A STRING COM A FUNCAO REVERSE() DO STRINGBUILDER
                    int termina = PalavraVetor.length()-PalavraVetor.indexOf(caract)-1;//PROCURA NA PALAVRAVETOR A PRIMEIRA LETRA DA PALAVRA
                    int comeca = (termina-palavra.length()+1);
                    
                    System.out.format("A palavra %s, comeca na linha %s e termina na linha %s da coluna %s \n",palavra,comeca,termina,j);
                }
            }
            
        }
        
        
    }
    
    static void percorrerMatrizDiagonal(char[][] matriz, String palavra){
        
        String PalavraVetor="";
        String pal="";
        int p=0;
        int o=0;
        
        for (int con = 0; con < matriz.length; con++) {
                        
            for (int i = 0; i < matriz.length; i++) {
                PalavraVetor="";
                
                for (int j = 0; j < matriz[i].length; j++) {

                    if (i==j+con) {
                       
                        PalavraVetor=String.valueOf(matriz[i][j]);
                    }

                }
                pal=pal+PalavraVetor;
                //System.out.println(pal);
                //if (pal.length()==matriz[i].length) {
                    
                    if (pal.contains(palavra)) {
                    
                        String caract = palavra.substring(0,2);//PEGA OS CARACTERES ENTRE AS POSIÇÕES DEFINIDAS 
                        int comeca = pal.indexOf(caract);//PROCURA NA PALAVRAVETOR AS PRIMEIRAS LETRAS DA PALAVRA
                        int termina = (comeca+palavra.length())-1;
                        System.out.format("A palavra %s, comeca na linha %s e termina na linha %s da coluna %s ate a coluna %s \n",palavra,comeca,termina,o,p);
                        pal="";
                        break;
                        
                    }
                    
                  //pal="";
                //}
                
            }
            
            //System.out.println(pal);
            if (pal.contains(palavra)) {
                break;
            }
        }
    }

}