Matrice Sur Java [Fermé]

Signaler
Messages postés
11
Date d'inscription
jeudi 9 novembre 2017
Statut
Membre
Dernière intervention
17 novembre 2018
-
Messages postés
16301
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 avril 2021
-
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

Messages postés
93
Date d'inscription
dimanche 11 janvier 2009
Statut
Membre
Dernière intervention
30 mai 2020
4
Bonjour!

Le problème, c'est que tu utilises la classe Matrice comme un tableau de type de base! Ce n'est pas le cas! k[i][j] se traduit en un tableau de ton objet matrice à deux dimension!

Tu peux créer une méthode get pour récupérer ta variable! (Eventuellement un set pour l'initialiser)

public class Matrice {
  
  public Matrice Somme(Matrice k) {
   double r[][] = null;
   double k2[][] = k.getMatrice();
   for(int i=0;i<m.length;i++) {
    for(int j=0;j<m[i].length;j++) {
     r[i][j]= m[i][j] + k2[i][j];
    }
   }
   return new Matrice (r);
  }

  public double m[][] getMatrice() {
   return m;
  }

}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
11
Date d'inscription
jeudi 9 novembre 2017
Statut
Membre
Dernière intervention
17 novembre 2018

Merci Bq pour votre Réponse mais j'ai une autre problème dans le ligne r[i][j]= m[i][j] + k2[i][j] Il m'a donné c
- Null pointer access: The variable r can only be null at this
location
- Line breakpoint:Matrice [line: 22] - Somme(Matrice)
Messages postés
16301
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 avril 2021
2 817
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));
    }
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci