Erro matriz

6 respostas
T

Bom, o codigo que estou fazendo eh este

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package packagelivro;

/**
 *
 * @author winxp
 */
import java.util.Scanner;
public class Matriz {
    public static void main (String args[]) {
        int i=1,j;
        double determinante;
        double a[][] = new double[3][3];
            while (i <= 3) {                      //  for (i=1; i <=3 ; i++) {
               j = 1;
                while (j <=3 )                    // for (j=1; j <=3 ; j++)
                {
                System.out.println("Digite o valor ["+i+"]"+"["+j+"]"+ " da matriz");
                Scanner alpha = new Scanner(System.in);
                a[i][j] = alpha.nextDouble();
                j++;
                } 
              i++; }

        determinante = ((a[1][1] * a[2][2] * a[3][3]) - (a[1][3]+a[2][2]+a[3][1]));
        System.out.println("O determinante dessa matriz é: "+determinante);


            }
    }

e o erro eh o seguinte

run:
Digite o valor [1][1] da matriz
1
Digite o valor [1][2] da matriz
1
Digite o valor [1][3] da matriz
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at packagelivro.Matriz.main(Matriz.java:24)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

qualquer valor que seja, quando eh pra passas pra matriz de posicçao [2][1] ele da esse erro e nao vai

pelo amor de deus, alguem pode me ajudar? (a linha 24 que apresenta o erro é a mesma linha 24 do codigo acima )

6 Respostas

H

Fiz algumas alterações.

public static void main(String args[]) {
		int i = 0, j; // alterei para 0,  vetor, matriz, etc começa do 0(zero)
		double determinante;
		double a[][] = new double[3][3];
		while (i < 3) { // for (i=1; i <=3 ; i++) {// tirei o sinal de igual dessa linha 
			j = 0; // alterei para 0
			while (j < 3) // for (j=1; j <=3 ; j++) // tirei o sinal de igual dessa linha
			{                                       // coloquei o +1 para ficar as posicoes corretas para o usuario
				System.out.println("Digite o valor [" + (i+1) + "]" + "[" + (j+1) + "]"
						+ " da matriz");
				Scanner alpha = new Scanner(System.in);
				a[i][j] = alpha.nextDouble();
				j++;
			}
			i++;			
		}

                // alterei essa linha. onde era 1 coloquei 0, onde era 2 coloquei 1 e onde era 3 coloquei 2
		determinante = ((a[0][0] * a[1][1] * a[2][2]) - (a[0][2] + a[1][1] + a[2][0]));
		System.out.println("O determinante dessa matriz é: " + determinante);

	}

Saida: uma matriz 3X3

Digite o valor [1][1] da matriz
5
Digite o valor [1][2] da matriz
4
Digite o valor [1][3] da matriz
9
Digite o valor [2][1] da matriz
2
Digite o valor [2][2] da matriz
1
Digite o valor [2][3] da matriz
4
Digite o valor [3][1] da matriz
8
Digite o valor [3][2] da matriz
3
Digite o valor [3][3] da matriz
2
O determinante dessa matriz é: -8.0

Não sei se era isso que você queria.

Espero ter ajudado.

M

henriquejhc, boa noite. Tudo bem com você?

Arrays começam com índice 0.

Tente este código alterado:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package teste;

import java.util.Scanner;

public class Matriz {

    public static void main(String args[]) {
        int i = 0, j;
        double determinante;
        double a[][] = new double[3][3];
        while (i < 3) {                      //  for (i=1; i <=3 ; i++) {
            j = 0;
            while (j < 3) // for (j=1; j <=3 ; j++)
            {
                System.out.println("Digite o valor [" + (i+1) + "]" + "[" + (j+1) + "]" + " da matriz");
                Scanner alpha = new Scanner(System.in);
                a[i][j] = alpha.nextDouble();
                j++;
            }
            i++;
        }

    }
}
T

alterei o codigo para isso:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package packagelivro;

/**
 *
 * @author winxp
 */
import java.util.Scanner;
public class Matriz {
    public static void main (String args[]) {
        int i=0,j;
        double determinante;
        double a[][] = new double[3][3];
            while (i <=3) {                      //  for (i=1; i <=3 ; i++) {
                j=0;
                while (j <3 )                    // for (j=1; j <=3 ; j++)
                {
                System.out.println("Digite o valor ["+i+"]"+"["+j+"]"+ " da matriz");
                Scanner alpha = new Scanner(System.in);
                a[i][j] = alpha.nextDouble();
                j++;
                } 
              i++; }

        determinante = ((a[0][0] * a[1][1] * a[2][2]) - (a[0][2]+a[1][1]+a[2][0]));
        System.out.println("O determinante dessa matriz é: "+determinante);


            }
    }

e agora este erro aparece

run:
Digite o valor [0][0] da matriz
1
Digite o valor [0][1] da matriz
2
Digite o valor [0][2] da matriz
3
Digite o valor [1][0] da matriz
4
Digite o valor [1][1] da matriz
5
Digite o valor [1][2] da matriz
6
Digite o valor [2][0] da matriz
7
Digite o valor [2][1] da matriz
8
Digite o valor [2][2] da matriz
9
Digite o valor [3][0] da matriz
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at packagelivro.Matriz.main(Matriz.java:24)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)

estou confuso :cry:

M

Retire o "igual" desta linha:

while (i <=3) {

H

O código que eu postei está rodando direitinho. Uma matriz 3X3.

T

Nossa, completo erro meu

Desculpe-me, achei que tinha tirado o = já

È que ja estava “viciado” nesse código e nem reparei que apesar de querer ainda nao havia rancado o =

Obrigado pela atenção e paciencia

Criado 26 de fevereiro de 2010
Ultima resposta 27 de fev. de 2010
Respostas 6
Participantes 3