summe von 2 Matrizen

bradig

Aktives Mitglied
kann einer mir bitte sagen,was ich in der folgenden Implementierung falsch gemacht habe.
Es funktioniert .
Aber ein Bekannter von mir meinte,die Implementierung tut nicht zu 100% das,was die tun sollte.
Java:
 public static double[][] add(double[][] a, double[][] b) {

        double[][] c = new double[a.length][b.length];
        for (int i = 0; i < a.length; i++) {// Zeile  durchlaufen
            for (int j = 0; j < a[0].length; j++){// spalten  durchlaufen
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        return c;
    }

Bitte um Hilfe.
Herzlich
Bradig
 

bradig

Aktives Mitglied
kann einer mir bitte sagen,was ich in der folgenden Implementierung falsch gemacht habe.
Es funktioniert .
Aber ein Bekannter von mir meinte,die Implementierung tut nicht zu 100% das,was die tun sollte.
Java:
 public static double[][] add(double[][] a, double[][] b) {

        double[][] c = new double[a.length][b.length];
        for (int i = 0; i < a.length; i++) {// Zeile durchlaufen
            for (int j = 0; j < a[0].length; j++){// spalten durchlaufen
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        return c;
    }

Bitte um Hilfe.
Herzlich
Bradig
 

Harry Kane

Top Contributor
Die Matrix c muss nicht die Dimensionen [a.length][b.length] haben, sondern [a.length][a[0].length].
Ausserdem müssen die Ausgangsmatritzen dieselbe Größe haben, d. h. a.length = b.length muss gelten,
alle Arrays a[j] müssen gleich lang sein, und für alle Arrays a[j] und b[j] muss gelten a[j].length = b[j].length.
 
Zuletzt bearbeitet:

bradig

Aktives Mitglied
kann einer mir bitte sagen,was ich in der folgenden Implementierung falsch gemacht habe.
Es funktioniert .
Aber ein Bekannter von mir meinte,die Implementierung tut nicht zu 100% das,was die tun sollte.
Java:
 public static double[][] add(double[][] a, double[][] b) {
if (a.length!=b.length||a [0].length!=b [0].length||a==null||b==null){
throw new IllegalArgumentException ();
}
        double[][] c = new double[a.length][a [0].length];
        for (int i = 0; i < a.length; i++) {// Zeile  durchlaufen
            for (int j = 0; j < a[0].length; j++){// spalten  durchlaufen
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        return c;
    }

Ist jetzt so in Ordnung?
Bitte um Hilfe.
Herzlich
Bradig
 

Salo

Aktives Mitglied
Die Matrix c muss nicht die Dimensionen [a.length][b.length] haben, sondern [a.length][a[0].length].
Ausserdem müssen die Ausgangsmatritzen dieselbe Größe haben, d. h. a.length = b.length muss gelten,
alle Arrays a[j] müssen gleich lang sein, und für alle Arrays a[j] und b[j] muss gelten a[j].length = b[j].length.

So?

Java:
public static double[][] add(double[] a, double[] b) {

    if(a.length != b.length) return null;

    double[][] c = new double[a.length][a[0].length];

    for(int i = 0; i < a.length) {
        for(int j = 0; j < a[0].length {
            c[i][j] = a[i][j] + b[i][j];
        }
    }
    return c;
}

Falls es so nicht funktioniert, dann schilder dein Problem etwas genauer.
Dann können wir dir auch besser helfen.:)

Gruß, Salo
 

bradig

Aktives Mitglied
ich glaube ,der einzige Fehler,der eigentlich keine Auswirkung auf die berechnung hatte, lag bei der Deklaration von c.
double[][] c = new double[a.length][a[0].length] statt double[][] c = new double[a.length][b.length];
Mein Code hat immer hin,2 Matrizen ohne Probleme addieren können,obwohl ich c nicht "korrekt" deklariert habe.
Danke an allen,die mir geholfen haben.
Mein junit-test:
Java:
     @Test
    public void testMatrixAdd() {
        double[][] m = {{1,2,3},{4,5,6},{7,8,9}};
        double[][] n = {{1,2,3},{4,5,6},{7,8,9}};

        double[][] exp = {{2,4,6},{8,10,12},{14,16,18}};
        assertArrayEquals( exp, Matrix.add(m, n));
    }

Herzlich
 

bradig

Aktives Mitglied
Soweit ich es verstanden habe,müssen die beiden matrizen gleich lang sein und die gleiche Anzahl von spalten haben.
Ausserdem muss jede matriz die gleiche Anzahl von zeilen und von spalten haben.
A=N×N
B=N×N
RICHTIG?
 

bradig

Aktives Mitglied
Wie doof von mir..ich habe echt gedacht ,die addition nur mit quadratischen Matrizen geht.
Vielen Dank jStein52.
Das heisst :
A.length==B.length && A[0].length==B[0].length gelten muss.
Oder?
 

JStein52

Top Contributor
ich habe echt gedacht ,die addition nur mit quadratischen Matrizen geht.
Das dachte ich mir und deshalb hatte ich so drauf rumgeritten dass du es auch mal mit nicht quadratischen Matrizen testest. Denn dann hättest du bei deinem Code eine IndexOutOfBounds Exception gekriegt.
Und da du in Java 2-dimensionale Arrays konstruieren kannst deren Zeile verschieden lang sind hat @Cromewell recht dass du bei jeder Zeile testen musst ob beide gleich lang sind. Ob das dann noch als als Matrix im mathematischen Sinn bezeichnet wird weiss ich aber nicht.
 

bradig

Aktives Mitglied
ja.ich habe es mit nicht quadratischen Matrizen getestet.
Ich bekomme ein IndexOutOfBounds Exception.

ich muss versuchen,so zu implementieren,dass es auch mit nicht quadratischen Matrizen funktioniert.
 

JStein52

Top Contributor
Ja. Du musst das ergebnis-Array richtig dimensionieren ! Der Rest deines Codes ist erst mal richtig.
Du kannst dann im nächsten Schritt noch diverse Prüfungen einbauen.
 

bradig

Aktives Mitglied
Meine Lösung :
Java:
 public static double[][] add(double[][] a, double[][] b) {
if(a.length!=b.length || a[0].length!=b[0].length||a==null||b==null){
throw new IllegalArgumentException();
}
     double[][] c = new double[a.length[a[0].length];
        for (int i = 0; i < a.length; i++) {// Zeile durchlaufen
            for (int j = 0; j < a[0].length; j++){// spalten durchlaufen
                c[i][j] = a[i][j] + b[i][j];
            }
        }
        return c;
    }

Herzlich
 

bradig

Aktives Mitglied
die Oben stehende Lösung funktioniert mit quadratischen und nicht quadratischen Matrizen.
Also.A=m*n,B=m*n
m und n können entweder gleich sein(Quadratische Matrizen) oder verschieden sein(nicht quadratische Matrizen).
danke noch an allen.
 

bradig

Aktives Mitglied
Ein Fall ist mir noch gerade beim Testen aufgefallen.
Wenn in dem Array a ,ein null-Array (null) enthalten ist (Beispiel: a[0]={null,{1,2},{3,4}})
ich habe versucht auch ein IllegalArgumentException dafür ausgeben zu lassen,aber ich bekomme immer ein NullPointerException.

Java:
for(int i=0;i<a.length;i++){

if(a[i]==null ||b[i]==null|| a.length!=b.length || a[0].length!=b[0].length||a==null||b==null){
throw new IllegalArgumentException();
}
wie kann man dieses Problem lösen?
Danke im voraus.
Herzlich
Bradig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S 100 als Summe Java Basics - Anfänger-Themen 16
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
Ninum Summe Java Basics - Anfänger-Themen 3
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
G Java 2-dimensionalen int-Array Summe Java Basics - Anfänger-Themen 2
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
R Summe Java Basics - Anfänger-Themen 13
M Array Summe bestimmen? Java Basics - Anfänger-Themen 14
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
A Summe des Arrays pd mit alternativer Schleife Java Basics - Anfänger-Themen 2
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
F Summe in einem Array bestimmen Java Basics - Anfänger-Themen 3
N Quadratische Matrix inkl Summe Java Basics - Anfänger-Themen 8
F Summe aller echten Teiler Java Basics - Anfänger-Themen 2
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
M Array Summe- wo ist der Fehler ? Java Basics - Anfänger-Themen 13
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
A Summe aller ungeraden Zahlen Java Basics - Anfänger-Themen 5
J ArrayList: summe aller Spielkarten Java Basics - Anfänger-Themen 15
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
K Methode: Summe von n Zahlen Java Basics - Anfänger-Themen 24
S Summe aus Kombinationen /permutationen einer Liste mit einer Obergrenze Java Basics - Anfänger-Themen 10
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
V Input/Output ArrayList Summe ausgeben Java Basics - Anfänger-Themen 57
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
Joew0815 summe aus einem aarray Java Basics - Anfänger-Themen 4
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
E Summe der "Nachbarn" eines Wertes in einem Array bestimmen Java Basics - Anfänger-Themen 8
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
G Rekursion Summe Java Basics - Anfänger-Themen 15
D Summe von Eingaben in einer for Schleife Java Basics - Anfänger-Themen 4
J Summe mit 45 nachkommastellen Java Basics - Anfänger-Themen 8
D Summe aller Positiven Integer aus einer Liste mit ActionObject Java Basics - Anfänger-Themen 2
V Programm summe Java Basics - Anfänger-Themen 11
I Summe eines Arrays ohne Schleife Java Basics - Anfänger-Themen 4
C Summe berechnen Java Basics - Anfänger-Themen 22
A Summe aller Natürlichen Zahlen - Methode Prüfen Java Basics - Anfänger-Themen 10
D Pyramide: Summe der diagonal über ihr stehenden Zahlen! Java Basics - Anfänger-Themen 6
A summe von m bis n mit for-Schleife Java Basics - Anfänger-Themen 5
M array - summe quer Java Basics - Anfänger-Themen 9
J summe von aufeinander folgenden floats eines arrays Java Basics - Anfänger-Themen 10
B array bestimmte summe berechnen Java Basics - Anfänger-Themen 4
S Summe Berechnen Java Basics - Anfänger-Themen 6
S Summe von Zufallszahlen Java Basics - Anfänger-Themen 9
Z Summe von Vektor-Elementen Java Basics - Anfänger-Themen 5
E Array gebildete Summe ausgeben Java Basics - Anfänger-Themen 5
D 100.0% gleichmäßig aufteilen, so dass Summe 100.0% sind, nicht 99,9% oder 100,1% Java Basics - Anfänger-Themen 3
M Rekursion Summe vom Array Java Basics - Anfänger-Themen 2
W sin-funktion x-wert der summe approximieren Java Basics - Anfänger-Themen 2
M Summe eines Arrays Java Basics - Anfänger-Themen 2
U Summe produkt von einem array Java Basics - Anfänger-Themen 9
J Summe postive Zahlen und negative Zahlen Java Basics - Anfänger-Themen 12
G Summe der Ziffern einer Zahl EFFIZIENT berechnen? Java Basics - Anfänger-Themen 18
J matrix nach summe der spalten sortieren Java Basics - Anfänger-Themen 5
Antoras Zahlen mischen und mit einer for-Schleife Summe berechnen Java Basics - Anfänger-Themen 12
G Summe zweier doubles falsch? Java Basics - Anfänger-Themen 10
G Md5 Summe eines Fileobjektes bilden Java Basics - Anfänger-Themen 4
G JTable Zwischenüberschriften bzw. Summe? Java Basics - Anfänger-Themen 2
L Berechnung Summe Java Basics - Anfänger-Themen 3
A String in Zahlen/Summe umformen Java Basics - Anfänger-Themen 2
R Summe Iterative Java Basics - Anfänger-Themen 6
S Summe innerhalb eines arrays? Java Basics - Anfänger-Themen 2
M summe von squares Java Basics - Anfänger-Themen 3
S 2D Array Matrizen Java Basics - Anfänger-Themen 7
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
K Datentypen Einträge zweier Matrizen vergleichen Java Basics - Anfänger-Themen 4
E 2 Matrizen multiplizieren - Output fehlt... Java Basics - Anfänger-Themen 5
H Erste Schritte Determinantenberechnung von Matrizen Java Basics - Anfänger-Themen 1
U Erste Schritte Aufbau eines kleinen Matrizen-Programms(MVC; OOP) Java Basics - Anfänger-Themen 20
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
R Matrizen nebeneinander ausgeben. Java Basics - Anfänger-Themen 1
B Matrizen Operationen Java Basics - Anfänger-Themen 7
S Bearbeitung von Matrizen Java Basics - Anfänger-Themen 14
A Matrizen aufgabe Java Basics - Anfänger-Themen 46
U Größenvergleich / Dimensionsvergleich zweier Matrizen Java Basics - Anfänger-Themen 2
N NullPointerException beim Addieren von Matrizen Java Basics - Anfänger-Themen 3
L Matrizen aufteilen Java Basics - Anfänger-Themen 3
P Matrizen zusammenfügen Java Basics - Anfänger-Themen 8
M Array Matrizen, int[][] Java Basics - Anfänger-Themen 5
K Matrizen Multiplikation Java Basics - Anfänger-Themen 3
L Mit matrizen rechnen Java Basics - Anfänger-Themen 19
J Matrizen Java Basics - Anfänger-Themen 10
C Dynamische Matrizen Java Basics - Anfänger-Themen 4
C Verwendung von Matrizen in einer Schleife Java Basics - Anfänger-Themen 5
C große Matrizen, Performance, (Pointer?) Java Basics - Anfänger-Themen 6
M Speichern von Matrizen in Maps günstiger als in Arrays? Java Basics - Anfänger-Themen 22
J Einlesen von Werten in zwei Matrizen Java Basics - Anfänger-Themen 4
G Addition von 2 Matrizen Java Basics - Anfänger-Themen 31
M Matrizen zeilenweise einlesen (Größe unbekannt) Java Basics - Anfänger-Themen 4
S ? Matrix / Matrizen ? Java Basics - Anfänger-Themen 32

Ähnliche Java Themen

Neue Themen


Oben