import java.util.Scanner;
public class Determinante {
private static int dimensao = 0;
static Scanner digite = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("\n Digite a dimensão para MAT..:");
dimensao = digite.nextInt();
if (dimensao > 3) {
System.out.println(" no momento so pode ser de 3 x 3 ..:");
}
int linha = 0, coluna;// vetor começa do zero
double det;
double mat[][] = new double[dimensao][dimensao];
while (linha < 3) {
coluna = 0;
while (coluna < 3) {
System.out.println("\n Digite valorespara MAT [" + (linha + 1)
+ "] [" + (coluna + 1) + "]");
Scanner alpha = new Scanner(System.in);
mat[linha][coluna] = alpha.nextDouble();
coluna++;
}
linha++;
}
det = ((mat[0][0] * mat[1][1] * mat[2][2]) - (mat[0][2] + mat[1][1] + mat[2][0]));
System.out.println("O determinante dessa matriz é: " + det);
}
}
minha duvida é aqui estou calculando a det de ordem 3 e se eu quiser nesse mesmo codigo calcular de ordem 2 eu teirei de fazer um else e repetir isso aqui ?
det = ((mat[0][0] * mat[1][1] * mat[2][2]) - (mat[0][2] + mat[1][1] + mat[2][0]));
System.out.println("O determinante dessa matriz é: " + det);
só que ao invés de disso diminuiria os calculo pq acima e de ordem 3 ?
olivercld, boa tarde!
Seu cálculo de determinente de matriz de 3º ordem está errado. Esse métodos que você usou é o usado para matriz de ordem 2, porém é dado pela diferença entre produto (multiplicação) dos termos da diagonal primária e produto dos termos da diagonal secundária.
Faça uma revisão ae.
Tem uma fórmula para resolver determinente de órdem arbitrária…
Abraço!
O determinante da matriz de ordem 3 é calculado assim:

Ou se achar melhor, assim:

outra dúvida:
por que você criou dois objetos do tipo Scanner ?
Um só basta! 
E porque ta usando while dentro de while?
Não é possível usar “for” não?
logo logo farei um software desses (eu acho)…
aí posto o source para mostrar
(depois que vc ter terminado o seu, claro)

obrigado galera… vou analisar melhor a forma de fazer a determinante e ai posto o codigo denovo.
vou passar a maneira de fazer no papel …
conseguindo ou nao posto aqui valeuuu
d34d_d3v1l vc me perguntou sobre o while entao la ta querendo dizer que enquanto linha for menor que 3 esta dizendo que e o maximo que posso fazer e uma matriz de 3 ordem certo ? e se o usuario digitar um numero superior exem: uma 4x4 ela nao vai aceitar so que mesmoa ssim ao eu colocar uma 4 la no começo continua pedindo para digitar os valores da matriz .
Se o Software só funciona com matriz 3x3, então pq vai pedir para o usuario digitar ? 
abrazz…
deu certo veja o codigo:
import java.util.Scanner;
public class Determinante {
static int det;
static Scanner digite = new Scanner(System.in);
public static void main(String[] args) {
int[][] matriz = new int[3][3];
//int[][] mat = new int [2][2];
//System.out.println("Qual ordem vc quer 2 ou ordem 3:");
//digite.next();
//if(digite == 2){
System.out.println("\n Digite os valores para MAT..:");
for (int linha = 0; linha <= 2; linha++) {
for (int coluna = 0; coluna <= 2; coluna++) {
System.out.println("Mat: [" + (linha + 1) + "][" + (coluna + 1)
+ "]");
matriz[linha][coluna] = digite.nextInt();
}
}
det = matriz[0][0] * matriz[1][1] * matriz[2][2] + matriz[0][1]
* matriz[1][2] * matriz[2][0] + matriz[0][2] * matriz[1][0]
* matriz[2][1] - matriz[0][0] * matriz[1][2] * matriz[2][1]
- matriz[0][1] * matriz[1][0] * matriz[2][2] - matriz[0][2]
* matriz[1][1] * matriz[2][0];
System.out.println("O determinante dessa matriz é: " + det);
}
}
agora eu tentei fazer tipo um menu, pra escolher se o usuario quer uma 2x2 ou a 3x3, tntei fazer mais nao estou sabendo, queria assim se usuario qeur uma 2x2 digite tal se ele quer uma 3x3 digite tal. tem como fazer ? poderiam me dar uma ajuda
ha sim o exercicio funcionou direito em uma 3x3 peguei estes numeros de um exercicio conferi
saida:
Digite os valores para MAT..:
Mat: [1][1]
-1
Mat: [1][2]
2
Mat: [1][3]
3
Mat: [2][1]
0
Mat: [2][2]
1
Mat: [2][3]
4
Mat: [3][1]
-2
Mat: [3][2]
-3
Mat: [3][3]
5
O determinante dessa matriz é: -27
ta e agora caso eu queira fazer dentro do msmo codigo uma 2x2 , eu nao estou acertando fazer tipo um menu pra o usuario escolher qual ele quer a 2x2 ou a 3x3. ? tentei fazer no codigo so que nao ta saindo
Usei o seu codigo e fiz so algumas modificações. Ainda poderia melhorar o codigo mas ficaria mais difícil o entendimento da lógica.
import java.util.Scanner;
public class Determinantes {
public static int det;
public static Scanner ler = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Escolha a ordem da matriz que deseja calcular 2 ou 3 :");
int ordem = ler.nextInt();
int[][] matriz = new int[ordem][ordem];
//if(digite == 2){
System.out.println("\n Digite os valores para MAT..:");
for (int linha = 0; linha < ordem; linha++) {
for (int coluna = 0; coluna < ordem; coluna++) {
System.out.println("Mat: [" + (linha + 1) + "][" + (coluna + 1)
+ "]");
matriz[linha][coluna] = ler.nextInt();
}
}
if (ordem==3){
det = matriz[0][0] * matriz[1][1] * matriz[2][2] + matriz[0][1]
* matriz[1][2] * matriz[2][0] + matriz[0][2] * matriz[1][0]
* matriz[2][1] - matriz[0][0] * matriz[1][2] * matriz[2][1]
- matriz[0][1] * matriz[1][0] * matriz[2][2] - matriz[0][2]
* matriz[1][1] * matriz[2][0];
System.out.println("O determinante dessa matriz é: " + det);
}
if (ordem==2){
det= matriz[0][0]*matriz[1][1]-matriz[0][1]*matriz[1][0];
System.out.println("O determinante dessa matriz é: " + det);
}
}
}
troque isso:
if (ordem==3){
det = matriz[0][0] * matriz[1][1] * matriz[2][2] + matriz[0][1]
* matriz[1][2] * matriz[2][0] + matriz[0][2] * matriz[1][0]
* matriz[2][1] - matriz[0][0] * matriz[1][2] * matriz[2][1]
- matriz[0][1] * matriz[1][0] * matriz[2][2] - matriz[0][2]
* matriz[1][1] * matriz[2][0];
System.out.println("O determinante dessa matriz é: " + det);
}
if (ordem==2){
det= matriz[0][0]*matriz[1][1]-matriz[0][1]*matriz[1][0];
System.out.println("O determinante dessa matriz é: " + det);
}
por isso
metodo ordem2(parametros){
det= matriz[0][0]*matriz[1][1]-matriz[0][1]*matriz[1][0];
return det
}
metodo ordem3(parametros){
det = matriz[0][0] * matriz[1][1] * matriz[2][2] + matriz[0][1]
* matriz[1][2] * matriz[2][0] + matriz[0][2] * matriz[1][0]
* matriz[2][1] - matriz[0][0] * matriz[1][2] * matriz[2][1]
- matriz[0][1] * matriz[1][0] * matriz[2][2] - matriz[0][2]
* matriz[1][1] * matriz[2][0];
return det
}
switch(ordem){
case:2; chama o metodo ordem2;break;
case: 3; chama o metodo ordem3; break
}
System.out.println("O determinante dessa matriz é: " + det);
}
não sei se posso postar aqui mais estou fazendo essa transposta e so que nao ta saindo transposta veja:
import java.util.Scanner;
public class Transposta {
static Scanner digite = new Scanner(System.in);
public static void main(String[] args) {
int[][] matriz = new int[4][4];
System.out.println("Leitura dos valores da matriz");
for (int linha = 0; linha < 4; linha++) {
for (int coluna = 0; coluna < 4; coluna++) {
System.out.println("matriz. :[" + (linha + 1) + "] ["
+ (coluna + 1) + "]");
matriz[linha][coluna] = digite.nextInt();
}
}
System.out.println("Matriz Transposta\n");
for (int linha = 0; linha < 4; linha++) {
// System.out.print("|");
for (int coluna = 0; coluna < 4; coluna++)
System.out.println(" Ressult " + matriz[coluna][linha]);
System.out.println();
}
}
}
olivercld, boa tarde!
Testa assim pra ver se fica bom:[code] System.out.println(“Matriz Transposta:”);
for (int coluna = 0; coluna < 4; coluna++) {
System.out.print("\n|");
for (int linha = 0; linha < 4; linha++) {
System.out.print(matriz[coluna][linha]+"|");
}
System.out.println("");
}[/code]Abraço!
sim desse jeito ta saindo uma embaixo da outra. só que quero a trasposta e nao e isso que acontece oprof falou que era assim so que o que aconteceno esta sendo transposta. veja:
Leitura dos valores da matriz
matriz. :[1] [1]
1
matriz. :[1] [2]
2
matriz. :[1] [3]
3
matriz. :[1] [4]// fim da linha 1
4
matriz. :[2] [1]
5
matriz. :[2] [2]
6
matriz. :[2] [3]
7
matriz. :[2] [4]// fim da linha 2
8
matriz. :[3] [1]
9
matriz. :[3] [2]
1
matriz. :[3] [3]
2
matriz. :[3] [4]// fim da linha 3
3
matriz. :[4] [1]
4
matriz. :[4] [2]
5
matriz. :[4] [3]
6
matriz. :[4] [4]//
7
Matriz Transposta
|1|2|3|4| // deveria linha se tornar coluna
|5|6|7|8|
|9|1|2|3|
|4|5|6|7|
assim:
1 5
2 6
3 7
4 8
é dessa forma e nao esta da maneira de como ele falou para ser transposta
nao estou conseguindo criar o metodo há um monte de erros poderia me explicar. alguem ou cleyvison
//if(ordem == 3){
public int TerceiraOrdem(int i){
det = matriz[0][0] * matriz[1][1] * matriz[2][2] + matriz[0][1]
* matriz[1][2] * matriz[2][0] + matriz[0][2] * matriz[1][0]
* matriz[2][1] - matriz[0][0] * matriz[1][2] * matriz[2][1]
- matriz[0][1] * matriz[1][0] * matriz[2][2] - matriz[0][2]
* matriz[1][1] * matriz[2][0];
//System.out.println("O determinante dessa matriz é: " + det);
return det;
}
//if(ordem == 2)
public SegundaOrdem(int ){
det = matriz[0][0]* matriz[1][1] - matriz[0][1] * matriz[1][0];
//System.out.println("O determinante dessa matriz é: " + det);
return det;
}
switch(ordem){
case 2:
break;
case 3:
break ;
}
System.out.println("O determinante dessa matriz é: " + det);
}
Opa, eu inverti os índices, é que fiz correndo não tive tempo de testar. Testa assim:[code] System.out.println(“Matriz Transposta:”);
for (int coluna = 0; coluna < 4; coluna++) {
System.out.print("\n|");
for (int linha = 0; linha < 4; linha++) {
System.out.print(matriz[linha][coluna]+"|");
}
System.out.println("");
}[/code]Abraço!