Fallo en inicializar matriz

Iniciado por BJM, 5 Junio 2014, 16:57 PM

0 Miembros y 1 Visitante están viendo este tema.

BJM

Código (java) [Seleccionar]

package matriz;

import java.util.Scanner;


public class Matriz {
   
    public static void main(String[] args) {
       
Scanner x = new Scanner (System.in);
    int m = 0,n = 0, i=0,j=0,a=0,b=0, c=0, d=0;
    int multi;
    int M[][] = new int[m][n];
     int N[][] = new int[a][b];
    System.out.println(" DIMENSIONES DE LA MATRIZ 1 ");
    System.out.println(" FILAS M[*][]: ");
    m = x.nextInt();
    System.out.println(" COLUMNAS M[][*]: ");
    n = x.nextInt();
     System.out.println(" LLENADO DE LA MATRIZ 1: ");
    for (i=0 ; i<m;i++){
    for(j=0;j<n;j++){
    System.out.print(" Valor ["+(i+1)+"]["+(j+1)+"]: ");
        M[i][j]= x.nextInt();
    }
    }
    System.out.println(" DIMENSIONES DE LA MATRIZ 2 ");
    System.out.println(" FILAS M[*][]: ");
    a = x.nextInt();
    System.out.println(" COLUMNAS M[][*]: ");
    b = x.nextInt();
    System.out.println(" LLENADO DE LA MATRIZ 2: ");
    for (c=0 ; c<a;c++){
    for(d=0;d<b;d++){
    System.out.println(" Valor ["+(c+1)+"]["+(d+1)+"]: ");
        N[c][d]= x.nextInt();
    }
    }
    multi =M[i][j] * N[c][d];
    System.out.println(" Multiplicacion de las matrices:  "+multi);
   
    }
}


En esta linea  M[j]= x.nextInt(); Netbeans me muestra el siguiente mensaje:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Valor [1][1]:    at matriz.Matriz.main(Matriz.java:25)
Java Result: 1

gordo23

Ese error significa que estás intentando entrar a un indice que no se encuentra en la matriz, por ejemplo, si la matriz tiene tamaño [1][1] y vos querés entrar al [2][2], netbeans te larga ese error.

Ahora pasemos a porque te da ese error:

Si te fijas bien, inicializas las variables "m" y "n" en la linea 12, luego creas la matriz en la linea 14 con los valores que tienen "m" y "n" hasta el momento, es decir, 0 para "m" y 0 para "n".

Luego le pedis al usuario que ingrese el tamaño de la matriz, por lo que cambias a "m" y "n" a valores como 5 y 4.

Y por último, cuando recorres la matriz en los ciclos for de la linea 22 y 23, estas comparando la variable "i" con la variable "m", que tiene valor 5, muy diferente al tamaño real de la matriz que es 0. ¿me explico?

Por lo que, lo único que tenés que hacer es crear las matrices LUEGO de pedir los datos al usuario.


Si no entendiste avisame e intento explicarlo de otra forma. Saludos y suerte.