Foro de elhacker.net

Programación => Java => Mensaje iniciado por: danissj en 31 Marzo 2019, 23:54 pm



Título: Suma de dos matrices - Me devuelve "[[D@7d4991ad"
Publicado por: danissj en 31 Marzo 2019, 23:54 pm
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
  1. package bidimensional;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Bidimensional {
  6.  
  7. private double[][] matriz;
  8. private int renglones;
  9. private int columnas;
  10.  
  11. public Bidimensional(int renglones, int columnas) { // constructor y pido el ingreso de valores a matrices
  12. Scanner entrada = new Scanner(System.in);
  13. this.matriz = new double [renglones][columnas];
  14.  
  15. for(int i=0 ; i<renglones; i++)
  16. {
  17. for(int j=0; j<columnas; j++) {
  18. System.out.print("Ingresar el numero de matriz ["+i+":"+j+"]: ");
  19. matriz[i][j]=entrada.nextDouble();
  20. }
  21. }
  22. }
  23.  
  24. public double[][] suma(Bidimensional m2) // operacion de suma
  25. {
  26. for(int i=0; i<2; i++) {
  27. for(int j=0; j<2; j++)
  28. {
  29. matriz[i][j]=matriz[i][j]+m2.matriz[i][j];
  30. }
  31. }
  32.  
  33. return matriz;
  34. }
  35.  
  36.  
  37. }

MAIN:

Código
  1. package testBidimensional;
  2.  
  3. import bidimensional.Bidimensional;
  4.  
  5. public class TestBidimensional {
  6.  
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub
  9.  
  10. Bidimensional matrices1 = new Bidimensional(2,2);
  11. Bidimensional matrices2 = new Bidimensional(2,2);
  12.  
  13. System.out.println("Suma: "+matrices1.suma(matrices2));
  14.  
  15. }
  16.  
  17. }


Título: Re: Suma de dos matrices - Me devuelve "[[D@7d4991ad"
Publicado por: rub'n en 1 Abril 2019, 00:30 am
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
  1. public class Bidimensional {
  2.  
  3. private double[][] matriz;
  4. private int renglones;
  5. private int columnas;
  6. private static final SecureRandom SR = new SecureRandom();
  7. private static final DecimalFormat TWO_DIGITS = new DecimalFormat("#.##");
  8.  
  9. public Bidimensional(int renglones, int columnas) { // constructor y pido el ingreso de valores a matrices
  10. Scanner entrada = new Scanner(System.in);
  11. this.matriz = new double [renglones][columnas];
  12.  
  13. for(int i=0 ; i<renglones; i++)
  14. {
  15. for(int j=0; j<columnas; j++) {
  16. matriz[i][j]= Double.valueOf(TWO_DIGITS.format(1 + SR.nextDouble()));
  17. System.out.print("Ingresar el numero de matriz ["+i+":"+j+"]: ");
  18. System.out.println(matriz[i][j]);
  19.  
  20. }
  21. }
  22. }
  23.  
  24. public double[][] suma(Bidimensional m2) // operacion de suma
  25. {
  26. for(int i=0; i<2; i++) {
  27. for(int j=0; j<2; j++)
  28. {
  29. matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
  30. }
  31. }
  32.  
  33. return matriz;
  34. }
  35.  
  36.        public double format(final double num) {
  37.            return Double.valueOf(TWO_DIGITS.format(num).replace(",", "."));
  38.        }
  39.  
  40. public static void main(String ...blalba) {
  41.  
  42. final Bidimensional matris = new Bidimensional(2,2);
  43. final Bidimensional matris2 = new Bidimensional(2,2);
  44.  
  45. final double[][] resultado = matris.suma(matris2);
  46. //Recorrer el Array de doble dimension, con java 8, java 7 usa doble for
  47. Arrays.stream(resultado)
  48. .flatMapToDouble(Arrays::stream)
  49.                                .map(this::format)
  50. .forEach(System.out::println);
  51.  
  52. }
  53. }

Código
  1. Ingresar el numero de matriz [0:0]: 1.32
  2. Ingresar el numero de matriz [0:1]: 1.8
  3. Ingresar el numero de matriz [1:0]: 1.62
  4. Ingresar el numero de matriz [1:1]: 1.71
  5. Ingresar el numero de matriz [0:0]: 1.53
  6. Ingresar el numero de matriz [0:1]: 1.6
  7. Ingresar el numero de matriz [1:0]: 1.6
  8. Ingresar el numero de matriz [1:1]: 1.57
  9. 2.85
  10. 3.4
  11. 3.22
  12. 3.28
  13.  
  14. Process finished with exit code 0

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

Código
  1. public double[][] suma(Bidimensional m2) // operacion de suma
  2. {
  3. for(int i=0; i<matriz.length; i++) {
  4. for(int j=0; j<m2.matriz[i].length; j++)
  5. {
  6. matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
  7. }
  8. }
  9.    return matriz;
  10. }

Y asi


Código
  1. for(int i=0; i<matriz.length; i++) {
  2.  for(int j=0; j<matriz[i].length; j++) {
  3. matriz[i][j]= matriz[i][j] + m2.matriz[i][j];
  4.  }
  5. }


Título: Re: Suma de dos matrices - Me devuelve "[[D@7d4991ad"
Publicado por: CalgaryCorpus en 1 Abril 2019, 05:10 am
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.