Matrice Sur Java

Fermé
abdeloo
Messages postés
11
Date d'inscription
jeudi 9 novembre 2017
Statut
Membre
Dernière intervention
17 novembre 2018
- Modifié le 14 nov. 2018 à 23:09
KX
Messages postés
16559
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
28 juin 2022
- 18 nov. 2018 à 00:06
Salut Tout le monde j'ai un problème avec mon Programme Java qui concerne d'écrire une classe définissant le concept de matrice carré avec un constructeur à un seul argument.

public class Matrice {

  private double m[][];
  public Matrice(double m[][]) {
   this.m = m;
  }
  
  public void multiplie(double n) {
   for(int i=0;i<m.length;i++) {
    for(int j=0;j<m[i].length;j++) {
     m[i][j]*=n;
    }
   }
  }
  
  public Matrice Somme(Matrice k) {
   Matrice r = null;
   for(int i=0;i<m.length;i++) {
    for(int j=0;j<m[i].length;j++) {
     r[i][j]= m[i][j] + k[i][j];
    }
   }
   return r;
  }

}


Mais a ce ligne r[i][j]= m[i][j] + k[i][j]; il m'a donner un erreur : The type of the expression must be an array type but it resolved to Matrice

2 réponses

KX
Messages postés
16559
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
28 juin 2022
2 961
18 nov. 2018 à 00:06
Bonjour,

Tu ne devrais pas manipuler directement les tableaux, et encore moins le passer en constructeur de ta classe, il faut travailler sur l'objet Matrice que tu manipules, pas sur ce qui la constitue.

Exemple :

import java.util.function.BiFunction;

public class Matrix {
    private final int width;
    private final int height;
    private final double[][] datas;

    public Matrix(int width, int height) {
        this.width = width;
        this.height = height;
        this.datas = new double[width][height];
    }

    public void setData(int i, int j, double data) {
        datas[i][j] = data;
    }

    public double getData(int i, int j) {
        return datas[i][j];
    }

    public int getWidth() {
        return width;
    }

    public int getHeight() {
        return height;
    }

    public static Matrix assignAll(Matrix matrix, BiFunction<Integer, Integer, Double> assignation) {
        for (int i = 0; i < matrix.getWidth(); i++) {
            for (int j = 0; j < matrix.getHeight(); j++) {
                matrix.setData(i, j, assignation.apply(i, j));
            }
        }
        return matrix;
    }

    public static Matrix product(Matrix matrix, double n) {
        return assignAll(new Matrix(matrix.getWidth(), matrix.getHeight()),
                (i, j) -> matrix.getData(i, j) * n);
    }

    public static Matrix sum(Matrix matrix1, Matrix matrix2) {
        return assignAll(new Matrix(matrix1.getWidth(), matrix1.getHeight()),
                (i, j) -> matrix1.getData(i, j) + matrix2.getData(i, j));
    }
}
2