La multiplication de matrice à l'aide de tableaux

Je suis en train de faire une simple multiplication de matrice de la méthode à l'aide de tableaux multidimensionnels ([2][2]). Je suis un peu nouveau à cela, et je ne peux pas trouver ce que je fais mal. Je serais vraiment reconnaissant de toute aide en me racontant ce qu'il est. Je préfère ne pas utiliser des bibliothèques ou quelque chose comme ça, je suis la plupart du temps de faire ceci pour savoir comment elle fonctionne. Je vous remercie beaucoup à l'avance.

Je suis en déclarant mon arays dans la méthode main, comme suit:

Double[][] A={{4.00,3.00},{2.00,1.00}}; 
Double[][] B={{ -0.500,1.500},{1.000,-2.0000}};

A*B doit retourner la matrice identité. Il n'a pas.

public static Double[][] multiplicar(Double[][] A, Double[][] B){
//the method runs and returns a matrix of the correct dimensions
//(I actually changed the .length function to a specific value to eliminate 
//it as a possible issue), but not the correct values

    Double[][] C= new Double[2][2];
    int i,j;

    ////I fill the matrix with zeroes, if I don't do this it gives me an error
    for(i=0;i<2;i++) {
        for(j=0;j<2;j++){
            C[i][j]=0.00000;
        }
    } 
    ///this is where I'm supposed to perform the adding of every element in
    //a row of A multiplied by the corresponding element in the
    //corresponding column of B, for all columns in B and all rows in A
    for(i=0;i<2;i++){
        for(j=0;j<2;j++)
            C[i][j]+=(A[i][j]*B[j][i]);
    }
    return C;
}
  • Vous avez besoin de trois boucles: il doit être C[i][j] += A[i][k] * B[k][j].
  • Si vous utilisez une double remarquer les minuscules D! vous n'avez pas à initialiser le tableau de la première
  • Pour répondre à votre question, je vous suggère d'utiliser un débogueur à l'étape par le biais de votre code pour savoir ce qu'il fait. Aussi je vous suggère d'utiliser double plutôt que Double.
  • Je vous remercie beaucoup. En rétrospective, c'était tellement évident. Je suis bête. Je vous remercie.
  • Merci beaucoup, je vais garder cela à l'esprit.
  • Il me faisait une erreur pour une raison quelconque, mais il semble étrange que je dois l'initialiser, car il est à ma connaissance le tableau est automatiquement rempli avec des 0, correct? J'étais probablement gâcher quelque part d'autre. Merci beaucoup pour la réponse.
  • Si vous avez besoin d'aide pour déterminer la cause de l'erreur, vous devez copier et coller le message d'erreur exact ici.
  • C'est l'erreur que j'obtiens. Gardez à l'esprit tout ce que je fait pour obtenir ce était de retirer la partie où je remplir le C tableau avec des 0, tout le reste est le même et la méthode fonctionne correctement si je n'ai pas l'enlever (même si elle ne fournit pas les valeurs correctes): Exception in thread "main" java.lang.NullPointerException lors de la clase.Ejecutable.multiplicar(Ejecutable.java:29) à la clase.Ejecutable.principale(Ejecutable.java:11) Java Résultat: 1
  • Le Dobules avec un grand D sont des objets, de sorte que vous êtes la création d'un tableau d'objets qui initialise à null. Une rangée de petites doubles est une primtive et l'initialise à 0.

InformationsquelleAutor | 2013-07-12