Suma de dos matrices - Me devuelve "[[D@7d4991ad"

Iniciado por danissj, 31 Marzo 2019, 23:54 PM

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

danissj

Hice un intento de programa para sumar dos matrices (soy novato en java) , el problema es que el resultado me devuelve un "[[D@7d4991ad" y no se como podria solucionarlo. cualquier ayuda es bienvenida.

Código (java) [Seleccionar]
package bidimensional;

import java.util.Scanner;

public class Bidimensional {

private double[][] matriz;
private int renglones;
private int columnas;

public Bidimensional(int renglones, int columnas) { // constructor y pido el ingreso de valores a matrices
Scanner entrada = new Scanner(System.in);
this.matriz = new double [renglones][columnas];

for(int i=0 ; i<renglones; i++)
{
for(int j=0; j<columnas; j++) {
System.out.print("Ingresar el numero de matriz ["+i+":"+j+"]: ");
matriz[i][j]=entrada.nextDouble();
}
}
}

public double[][] suma(Bidimensional m2) // operacion de suma
{
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++)
{
matriz[i][j]=matriz[i][j]+m2.matriz[i][j];
}
}

return matriz;
}


}


MAIN:

Código (java) [Seleccionar]
package testBidimensional;

import bidimensional.Bidimensional;

public class TestBidimensional {

public static void main(String[] args) {
// TODO Auto-generated method stub

Bidimensional matrices1 = new Bidimensional(2,2);
Bidimensional matrices2 = new Bidimensional(2,2);

System.out.println("Suma: "+matrices1.suma(matrices2));

}

}

rub'n

#1
Casi casi lo tiene dog  :xD, recorrer con doble ciclo for como haces con el método suma, porque debes recorrer cada indice, me da aburrimiento máximo llenarla, pero aleatoria nom y así ahorras tiempo en desarrollo, no apto para produccion  :xD

Pero me imagino que entiendes no? ejemplo las coordenada [0,0] de la matris1 se sumara con la [0,0] de la matris 2 y asi

Código (java) [Seleccionar]
public class Bidimensional {

private double[][] matriz;
private int renglones;
private int columnas;
private static final SecureRandom SR = new SecureRandom();
private static final DecimalFormat TWO_DIGITS = new DecimalFormat("#.##");

public Bidimensional(int renglones, int columnas) { // constructor y pido el ingreso de valores a matrices
Scanner entrada = new Scanner(System.in);
this.matriz = new double [renglones][columnas];

for(int i=0 ; i<renglones; i++)
{
for(int j=0; j<columnas; j++) {
matriz[i][j]= Double.valueOf(TWO_DIGITS.format(1 + SR.nextDouble()));
System.out.print("Ingresar el numero de matriz ["+i+":"+j+"]: ");
System.out.println(matriz[i][j]);

}
}
}

public double[][] suma(Bidimensional m2) // operacion de suma
{
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++)
{
matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
}
}

return matriz;
}
       
       public double format(final double num) {
           return Double.valueOf(TWO_DIGITS.format(num).replace(",", "."));
       }

public static void main(String ...blalba) {

final Bidimensional matris = new Bidimensional(2,2);
final Bidimensional matris2 = new Bidimensional(2,2);

final double[][] resultado = matris.suma(matris2);
//Recorrer el Array de doble dimension, con java 8, java 7 usa doble for
Arrays.stream(resultado)
.flatMapToDouble(Arrays::stream)
                               .map(this::format)
.forEach(System.out::println);

}
}


Código (bash) [Seleccionar]
Ingresar el numero de matriz [0:0]: 1.32
Ingresar el numero de matriz [0:1]: 1.8
Ingresar el numero de matriz [1:0]: 1.62
Ingresar el numero de matriz [1:1]: 1.71
Ingresar el numero de matriz [0:0]: 1.53
Ingresar el numero de matriz [0:1]: 1.6
Ingresar el numero de matriz [1:0]: 1.6
Ingresar el numero de matriz [1:1]: 1.57
2.85
3.4
3.22
3.28

Process finished with exit code 0


Tambien te sirve asi, y cualquier otra manera que funcione XD

Código (java) [Seleccionar]

public double[][] suma(Bidimensional m2) // operacion de suma
{
for(int i=0; i<matriz.length; i++) {
for(int j=0; j<m2.matriz[i].length; j++)
{
matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
}
}
   return matriz;
}


Y asi


Código (java) [Seleccionar]
for(int i=0; i<matriz.length; i++) {
 for(int j=0; j<matriz[i].length; j++) {
matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
 }
}



rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen

CalgaryCorpus

Una alternativa a esto es que el metodo suma no devuelva nada, o bien devuelva una referencia hacia el objeto Bidimensional y que sea el metodo toString() el que imprima los valores al interior del objeto Bidimensional.
Aqui mi perfil en LinkedIn, invitame un cafe aqui