Matrice en Java

[Fermé]
Signaler
-
 Tropsy -
Bonjour,

Je souhaite créer une fonction qui permet de nous dire si une matrice est diagonale. Voici ce que j'ai réussi à faire : Code Java :

public static void main(String[] args) {
        // TODO code application logic here
        
        // Variables :
        Scanner entrée = new Scanner(System.in);
        int nbl1;      // lignes de la matrice M1
        int nbc1;     // colonnes de la matrice M1
        boolean diagonale;

        // creation de la première matrice :
        Matrice M1;
        M1 = new Matrice();  
        System.out.println("Entrez le nombre de lignes de la première matrice : " );
        M1.ligne=entrée.nextInt();
        System.out.println("Entrez le nombre de colonnes de la première matrice : ");
        M1.colonne=entrée.nextInt();       
        M1.Mat= new int [M1.ligne][M1.colonne];
        System.out.println("Votre première matrice est de dimension : (" + M1.ligne +"," +M1.colonne +")");         
        // saisie de la première matrice : 
        for (nbl1=0;nbl1<M1.ligne;nbl1++)
            for (nbc1=0;nbc1<M1.colonne;nbc1++)
                M1.Mat[nbl1][nbc1]=entrée.nextInt();

   // appel de la fonction diagonale :
         diagonale=matrice_diagonale(M1);
         if (diagonale==true) {
         System.out.println("La matrice est diagonale."); }
         else System.out.println("La matrice n'est pas diagonale.");  



 public static boolean matrice_diagonale (Matrice M) {
        boolean est_diagonale;
        int i;
        est_diagonale=true;
        i=0;
        while (est_diagonale==true) {
           if (M.Mat[i][i]=0) {
               est_diagonale=true;
           }
           else est_diagonale=false;
           i=i+1;
    }
        return est_diagonale;
    }


Il y a une faute qui fait que ca ne fonctionne pas mais je ne vois pas laquelle. Pourriez vous m'aider ?
Merci.

3 réponses

Messages postés
16394
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 septembre 2021
2 876
Faire while (est_diagonale==true) n'est pas suffisant, car tu risques de toujours faire i=i+1; et ce même si tu dépasse M.ligne ou M.colonne alors qu'il qu'il faut bien sûr que tu t'arrêtes dans ces cas limites : while(est_diagonale && i<M.ligne && i<M.colonne)
1
Merci

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

CCM 42674 internautes nous ont dit merci ce mois-ci


Salut,

Tu utilises un type Matrice pour représenter tes matrices, mais as tu définit une classe Matrice qui contient les attributs/méthodes qui caractérisent ta matrice ?

Si oui, peux tu mettre le code stp
Salut,

Oui H4ardw4re j'ai définit une classe matrice, voici le code :

public class Matrice {
int ligne;
int colonne;
int Mat[][]; }

Et merci KX pour ton commentaire, j'avais oublié.