# Summen-Matrix



## tiyuti (14. Feb 2011)

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.


```
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!


----------



## Marco13 (14. Feb 2011)

Die methode soll einen int[][] zurückliefern und keinen int. Der "summe"-Array muss erstellt werden, bevor er befüllt wird.


```
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;


    }
}
```


----------



## Gonzo17 (14. Feb 2011)

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

Also zuerst einmal solltest du die Variable 
	
	
	
	





```
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 
	
	
	
	





```
m1[0].length == m2[0].length
```
 prüfst - wer sagt denn, dass 
	
	
	
	





```
m1[1].length == m2[1].length
```
 dann auch gilt und insbesondere dann sowas wie 
	
	
	
	





```
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.


----------



## Final_Striker (14. Feb 2011)

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.


----------



## Marco13 (14. Feb 2011)

Final_Striker hat gesagt.:


> 1. Deine Matrizenmultiplikation ist falsch.



"Falsch" klingt so absolut:



> Schreiben Sie eine Methode mult(), welche 2 Matrizen als Eingabefelder erhält und die Summen-Matrix als Rückgabeparameter liefert.



:bahnhof:


----------



## Gonzo17 (14. Feb 2011)

Final_Striker hat gesagt.:


> 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:


----------



## tiyuti (14. Feb 2011)

die Methode heißt mult() aber die Matrizen müssen addiert werden...


----------



## Final_Striker (14. Feb 2011)

Marco13 hat gesagt.:


> "Falsch" klingt so absolut:



Stimmt hast recht. 
mult() ist in dem Fall eine etwas verwirrende Bezeichnung für die Methode.


----------

