Bom, mais uma vez uma de matriz no caso os metodos da diagonal principal e secundaria, não esta retornando a soma delas o que pode estar acontecendo ?
codigo:
import java.io.IOException;
import java.util.Scanner;
public class matrizestruturada {
public static void main(String[] args) throws IOException {//Metodo principal
int key;//Variavel para execução do menu
System.out.println("Digite a dimensão da matriz:");
Scanner entrada = new Scanner(System.in);//Leitura do tamanho que tera a mtariz
int dimMatriz = entrada.nextInt();
int[][] matriz = new int[dimMatriz][dimMatriz];//Montagem da matriz
for (int lin = 0; lin < dimMatriz; lin++) {//Monta a matriz com o tamanho dito acima
for (int col = 0; col < dimMatriz; col++) {
System.out.println("Digite um valor");//Entradas dos valores da matriz
matriz[lin][col] = entrada.nextInt();//Recebe um valor e passa para o proximo
}
}
do{//Condição para impressao do menu ate que a condicao de parada seja digitada
System.out.println("\n ----------------MENU-------------------" +//Montagem do menu
"\n|---------------------------------------|" +
"\n| 1-IMPRIMIR A MATRIZ |" +
"\n| 2-IMPRIMIR A TRANSPOSTA DA MATRIZ |" +
"\n| 3-SOMAR DIAGONAL PRINCIPAL DA MATRIZ |" +
"\n| 4-SOMAR DIAGONAL SECUNDARIA DA MATRIZ |" +
"\n| 5-FINALIZAR |" +
"\n|---------------------------------------|");
Scanner entrada1 = new Scanner(System.in);//Le o valor digitado referente ao menu
key = entrada1.nextInt();//Variavel recebe o valor referente ao menu
switch (key) {
case 1://Caso seja digita a opcao 1
System.out.println("MATRIZ: \n");
imprimir(matriz);//Executa o metodo imprimir
System.out.println("");//Nescessario para montagem da matriz
break;
case 2: //Caso seja digita a opcao 2
System.out.println("Transposta: \n");
MatTransposta(matriz); //Executa o metodo MatTransposta
System.out.println("");//Montagem da matriz
break;
case 3: //Caso seja digita a opcao 3
System.out.println("Soma da diagonal principal da matriz: \n");
SomaDiagonalSegundaria(matriz); //Executa o metodo SomaDiagonalPrincipal
System.out.println("");//Montagem da Matriz
break;
case 4://Caso seja digitado a opcao 4
System.out.println("Soma da diagonal segundaria da matriz: \n");
SomaDiagonalSegundaria(matriz);//Executa o metodo SomaDiagonalSegundaria
System.out.println("");
break;
case 5://Caso seja digitado a opcao 5
System.out.println("FINALIZADO COM SUCESSO ");
System.out.close();//Encerra o sistema e da a mensagem acima
break;
default://Caso seja digitado uma opcao diferente das acima
System.out.println("Opcao Invalida \n");//Da a mensagem e pede outro digito
break;
}
}while(key != 5);//Condição de parada, executa as opçoes ate que o item digitado seja 5
}
public static void imprimir(int[][] Mat) {//Metodo imprimir
for (int lin = 0; lin < Mat.length; lin++) {//montagem da matriz
for (int col = 0; col < Mat.length; col++) {
System.out.print(Mat[lin][col] + " ");//IMpressao da matriz
}
System.out.println();//Nescessario para montagem da matriz
}
}
public int SomaDiagonalPrincipal(int[][] Mat) {//Metodo SomaDiagonalPrincipal
int soma= 0;//Variavel soma comeca zerada
for (int lin = 0; lin < Mat.length; lin++) {//Montagem da matriz
for (int col = 0; col < Mat.length; col++) {
if (lin == col) {//Sequencia para a soma da diagonal
soma=soma+Mat[lin][col];//Na condicao acima soma o valor mais a variavel soma
Mat[lin][col] +=1;//Passa para a proxima casa da matriz
}
}
}
return soma; //Retorna o valor da variavel soma que sera a soma da diagonal principal
}
public static int SomaDiagonalSegundaria (int[][] Mat){//Metodo SomaDiagonalSegundaria
int resultado = 0;//Variavel que recebera a soma
int col = Mat.length - 1;
for (int lin=0; lin < Mat.length; lin++){
resultado = resultado + Mat[lin][col];//Variavel recebe a soma do valor na condicao indicada
col --;
}
return resultado;
}
public static void MatTransposta (int [][] Mat){//Metodo MatTransposta
for (int lin = 0; lin < Mat.length; lin++) {//Montagem da matriz
for (int col = 0; col < Mat.length; col++) {
System.out.print(Mat[col][lin] + " ");//Montagem da matriz transposta, linha vira
//coluna, coluna vira linha. antes mat[lin][col], depois mat [col][lin]
}
System.out.println();
}
}
}//Fim do programa