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.
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:
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));
}
}
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
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);
}
}
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
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
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];
}
}
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.