Summen-Matrix

tiyuti

Mitglied
Hallo,
ich habe folgende Aufgabe: Schreiben Sie eine Methode mult(), welche 2 Matrizen als Eingabefelder erhält und die Summen-Matrix als Rückgabeparameter liefert. Die Methode soll zunächst prüfen, ob beide Matrizen dieselbe Dimensionen haben, sonst liefert die Methode NULL zurück.

Java:
public class Matrix
{
    
    public static void main (String args[])
    {
        int [][] m1 = {{1,2,3}, {2,3,4},{3,4,5}};
        int [][] m2 = {{6,5,4},{5,4,3},{3,2,1}};
        
        int [][] summe = mult(m1,m2);
        
    }
    
    
    static int mult(int [][] m1, int [][] m2)
    {
        int summe[][];
        //Dimensionen Kontrolle
        if ( m1.length == m2.length && m1[0].length == m2[0].length)
        {
            for (int i = 0; i < m1.length; i++)
        {
            for ( int j = 0; j < m1[0].length; j++)
            {
                summe[i][j] = (m1[i][j] + m2[i][j]);
            }
        }
        return summe;
    }
        else
            return null;
                
        
    }
}
Ich verstehe nicht warum ist es falsch!🙁
 
Die methode soll einen int[][] zurückliefern und keinen int. Der "summe"-Array muss erstellt werden, bevor er befüllt wird.

Code:
import java.util.*;

public class Matrix2
{

    public static void main (String args[])
    {
        int [][] m1 = {{1,1,3}, {2,3,4},{3,4,5}};
        int [][] m2 = {{6,5,4},{5,4,3},{3,2,1}};

        int [][] summe = mult(m1,m2);
        for (int i=0; i<3; i++)
        {
            System.out.println(Arrays.toString(summe[i]));
        }

    }


    static int[][] mult(int [][] m1, int [][] m2)
    {
        int summe[][] = null;
        //Dimensionen Kontrolle
        if ( m1.length == m2.length && m1[0].length == m2[0].length)
        {
            summe = new int[m1.length][m1[0].length];
            for (int i = 0; i < m1.length; i++)
        {
            for ( int j = 0; j < m1[0].length; j++)
            {
                summe[i][j] = (m1[i][j] + m2[i][j]);
            }
        }
        return summe;
    }
        else
            return null;


    }
}
 
Erstmal ein Tipp: wenn du sagst, wo der Fehler auftritt, dann kann dir schneller geholfen werden. 🙂

Also zuerst einmal solltest du die Variable
Code:
int summe[][]
initialisieren. Und zwar mit einem zweidimensionalen Array, das genau die Größe hat, die auch die beiden Matrizen haben.

Es ist übrigens nicht damit getan, wenn du nur
Code:
m1[0].length == m2[0].length
prüfst - wer sagt denn, dass
Code:
m1[1].length == m2[1].length
dann auch gilt und insbesondere dann sowas wie
Code:
m1[0].length == m1[1].length
? Problematisch wirds eben dann, wenn ein Array auf einmal größer ist als alle anderen. Das gibt bei deinem Programm nur einen Fehler, wenns das erste Array war, ists eins zwischendrin passiert "nichts" und der Wert geht einfach verloren.
 
1. Deine Matrizenmultiplikation ist falsch.
Matrizenmultiplikation

2. Zwei Matrizen können multipliziert werden, wenn die Spaltenanzahl der linken mit der Zeilenanzahl der rechten Matrix übereinstimmt. Bei dir können nur 2 quadratische Matrizen multipliziert werden.
 
1. Deine Matrizenmultiplikation ist falsch.
Matrizenmultiplikation

2. Zwei Matrizen können multipliziert werden, wenn die Spaltenanzahl der linken mit der Zeilenanzahl der rechten Matrix übereinstimmt. Bei dir können nur 2 quadratische Matrizen multipliziert werden.

Weiß nicht, ob hier wirklich multipliziert werden soll, auch wenn die Methode mult() heißt. Denn immerhin heißt das Ergebnis ja dann letztendlich "Summen-Matrix". :bahnhof:
 

Neue Themen


Zurück
Oben