Retroceder   Foros del Web > Temas generales de computación > Programación

Respuesta
 
Herramientas Desplegado
Antiguo 28-abr-2008, 16:56   #1 (permalink)
Bershke ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 3
Exclamación Porque no me imprime la suma de las matrices????????

Estoy tratando de hacer un programa en JAVA con la suma de dos matrices, sin embargo no me la imprime ¿porque?

Si me sale el menu, me pregunta sobre el numero de columnas y renglones, despues me lee las dos matrices pero no me imprime la suma de ellas.

Esto es lo que me sale:


Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Matriz.matrizsuma<PPMatriz.java:51>
at PPMatriz.main<PPMatriz.java:120>

Y la verdad no entiendo, pense que tal ves seria por el nombre de la clase pero no lo es. Este es el codigo:



import java.util.*;



class Matriz{

int[ ][ ]y;

Scanner in= new Scanner(System.in);

public Matriz(int r, int c){

y= new int[r][c];

}

public Matriz() {
}

public void llenaMatriz(int [ ][ ]y){

int i,j;

System.out.println("\nLeyendo Matriz...\n");

for (i=0; i<y.length;i++)
for (j=0; j<y[i].length; j++) {
System.out.print("Dame el elemento["+i+"]["+j+"]: ");
y[i][j] = in.nextInt();
}

}

public int obtenElemento(int i, int j){

return y[i][j];

}

public int asignaElemento(int i, int j, int valor){

return y[i][j]=valor;
}

public int[][] matrizsuma(int [ ][ ] y, int [ ][ ]z,int [ ][ ]u){

int i,j;

for (i=0; i<y.length;i++){
for (j=0; i<y[0].length; j++)
u[i][j]=this.asignaElemento(i,j,y[i][j]+this.obtenElemento(i,j));
}return u;

}

public void imprimeMatriz(int [ ][ ]matriz){

int i,j;

System.out.println("\n Imprimiendo Matriz: \n");

for (i=0; i<y.length;i++){
for (j=0; i<y[0].length; j++)

System.out.print(matriz[i][j]+"");
System.out.println();


}

}

}

public class PPMatriz{

public static void menu(){



System.out.println("\n\t\t\t * M E N U * ");
System.out.println("============================== ==================================");
System.out.println("[1] Suma");
System.out.println("[0] Salir");
System.out.print("Teclea la opcivõn deseada: ");
}

public static void main (String[ ]args){

Scanner in = new Scanner(System.in);

int r,c, option, sum, rest, multi, tras, deter, inv;
boolean seguir;
String entrada;

seguir = true;

do{

menu();
option = in.nextInt();

switch(option){

case 1: System.out.print("Dame el num. de renglones: ");
r = in.nextInt();

System.out.print("Dame el num. de columnas: ");
c = in.nextInt();

int [][]n2=new int[r][c];
int [ ][ ]n1=new int[r][c];

Matriz x=new Matriz(r,c);
Matriz z=new Matriz(r,c);
int [ ][ ]n3=new int[r][c];

x.llenaMatriz(n2);
z.llenaMatriz(n1);
n3=x.matrizsuma(n1,n2,n3);
x.imprimeMatriz(n3);

case 0: seguir = false;
break;
default: System.out.println("Error 4440: Teclea una opcion valida");

}

} while(seguir);

}
}
Bershke está desconectado   Responder Citando
Antiguo 29-abr-2008, 14:59   #2 (permalink)
dogduck está en el buen camino
 
Avatar de dogduck
 
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 1.893
Re: Porque no me imprime la suma de las matrices????????

Ayuda con un ArrayIndexOutOfBoundsException
Cita:
Como dice la excepción, es un índice fuera de rango. Eso quiere decir que algunos de los índices de alguno de los array te hace ir a una posición fuera del array. Por ejemplo, si y[] tiene 10 elementos e intentas acceder al y[23] te dará ese error. Es dificil saber cual puesto que no indicas los tamaños de los arrays ni el valor de n.

Recuerda también que los arrays empiezan con indice cero, por lo que si el array tiene 10 elementos, los indices válidos son de 0 a 9.
__________________
http://javcasta.es
dogduck está desconectado   Responder Citando
Antiguo 29-abr-2008, 21:29   #3 (permalink)
Bershke ha deshabilitado el karma
 
Fecha de Ingreso: enero-2008
Mensajes: 3
Re: Porque no me imprime la suma de las matrices????????

Grax por la ayuda, sin embargo me es un poco dificil comprender lo que has dicho.... solo se que me marca error en estas dos lineas, en la 51 y en la 120:

u[i][j]=this.asignaElemento(i,j,y[i][j]+this.obtenElemento(i,j));

n3=x.matrizsuma(n1,n2,n3);


pero he tratado de modificarlas y no obtengo la solucion... :(
Bershke está desconectado   Responder Citando
Respuesta
Calificación: Calificación de Tema: 2 votos, 3,50 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 14:56.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93