Matritzen multiplizieren

hubuluktu

Mitglied
Hallo,

ich würde gerne zwei Matritzen miteinander multiplizieren. Und zwar Matritze A der Größe 2x3 und Matritze B der Größe 3x2. Dabei muss der User selbst 12 random Zahlen eingeben. Hab zwar schon etwas programmiert, aber da ich mehrmal nachgerechnet habe, bin ich mir sicher, dass meine Lösung nicht stimmt. Nun würde ich gerne wissen wo mein Fehler liegt. Hier der Code:

Java:
public class Matrix {

	static int[][] multiplyMatrix(int[][] a, int[][] b) {
		int[][] c = new int[2][2];
		
		c[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2]*b[2][0];
		c[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]+b[2][1];
		c[1][0] = a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2]*b[2][0];
		c[1][1] = a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2]*b[2][1];
		
		return c;

	}

	public static void main(String[] args) {

		try {
			if (args.length != 12) {
				System.out.println("You must use exactly 12 arguments of Type Integer!");
			} else {
				int[][] c = new int[2][2];
				int[][] a = new int[2][3];
				int[][] b = new int[3][2];
				a[0][0] = Integer.parseInt(args[0]);
				a[0][1] = Integer.parseInt(args[1]);
				a[0][2] = Integer.parseInt(args[2]);
				a[1][0] = Integer.parseInt(args[3]);
				a[1][1] = Integer.parseInt(args[4]);
				a[1][2] = Integer.parseInt(args[5]);

				b[0][0] = Integer.parseInt(args[6]);
				b[0][1] = Integer.parseInt(args[7]);
				b[1][0] = Integer.parseInt(args[8]);
				b[1][1] = Integer.parseInt(args[9]);
				b[2][0] = Integer.parseInt(args[10]);
				b[2][1] = Integer.parseInt(args[11]);

				c = multiplyMatrix(a, b);
				System.out.println("C00: " + c[0][0] + " C01: " + c[0][1]);
				System.out.println("C10: " + c[1][0] + " C11: " + c[1][1]);
			}
		} catch (NumberFormatException nfEx) {
			System.out.println("Wrong format! You may only use Int-numbers as arguments!");
		}
	}
}



Schonmal Danke für die Hilfe
 

Milo

Bekanntes Mitglied
Hi,

in Deinem Code ist ein Tippfehler. Es muss heißen:
Java:
c[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]*b[2][1];

(Multiplikation statt Addition)

Dann sollte das Ergebnis stimmen.

Java:
public static void main(String[] args) {
		int[][]a = new int[][] {
				{3, 4, 5},
				{7, 9, 1},
		};

		int[][]b = new int[][] {
				{1, 5},
				{4, 3},
				{9, 7}
		};
		
		int [][] c = multiplyMatrix(a,b);
		for (int i=0; i<c.length; i++) {
			for (int j=0; j<c[i].length; j++) {
				System.out.print(c[i][j]+"  ");
			}
			System.out.println();
		}
	}

Gruß Micha
 

Final_Striker

Top Contributor
Kannst du das vllt. etwas genauer formulieren?

Java:
	public static void main(String[] args) {
		System.out.println(berechneSumme(3,4,5));
		System.out.println(berechneSumme(1,1000));
    }
	
	public static int berechneSumme(int a, int b, int c){
		int summe = a + b + c;
		return summe;
	}
	
	public static int berechneSumme(int von, int bis){
		int summe = 0;
		for (int i = von; i <= bis; i++) {
			summe += i;
		}
		return summe;
	}

Code:
public static int berechneSumme(int a, int b, int c)
Eine statische Version mit 3 Summanden.

Code:
public static int berechneSumme(int von, int bis)
Eine dynamische Version mit beliebig vielen Summanden.
 

nrg

Top Contributor
oder google doch einfach mal nach "matrizenmultiplikation java". da gibt es wirklich massig dazu im netz :)
 

Syntax6

Mitglied
Java:
	public static int berechneSumme(int a, int b, int c){
		int summe = a + b + c;
		return summe;
	}
	
	public static int berechneSumme(int von, int bis){
		int summe = 0;
		for (int i = von; i <= bis; i++) {
			summe += i;
		}
		return summe;
	}


Hallo ,hab ne Anfängerfrage zu dem Code. Warum kannst du beide Methoden gleich benennen (berechneSumme) ? Liegt es nur an der Anzahl der übergebenen Integervariablen, dass der Compiler erkennt um welchen Methodenaufruf es sich handelt ? :reflect:

Danke
 

jgh

Top Contributor
Genau daran liegt das. Man spricht von der Signatur einer Methode, die sich hier an 2x unterschiedlichen Anzahl von int-Variablen unterscheidet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ArkHeat Erste Schritte Zwei 2-dimensionale Matritzen addieren Java Basics - Anfänger-Themen 0
J Skalarmultiplikation (Matritzen) Java Basics - Anfänger-Themen 1
AhmadSlack Verzweigungen zahlen multiplizieren Java Basics - Anfänger-Themen 4
D String mit int multiplizieren? Java Basics - Anfänger-Themen 16
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
E 2 Matrizen multiplizieren - Output fehlt... Java Basics - Anfänger-Themen 5
G Äthopisches multiplizieren Java Basics - Anfänger-Themen 10
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
G Binärzahlen multiplizieren Java Basics - Anfänger-Themen 5
E Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 7
E Gleitkomma zahlen mathemathisch korrekt multiplizieren Java Basics - Anfänger-Themen 5
O Matrix Multiplizieren Java Basics - Anfänger-Themen 4
J Arrays multiplizieren Java Basics - Anfänger-Themen 1
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
L Array multiplizieren und ausgeben Java Basics - Anfänger-Themen 3
O Werte aus ArrayList multiplizieren und dann Ergebnis addieren Java Basics - Anfänger-Themen 3
M Datentypen Ausdehnungskoeffizienten multiplizieren Java Basics - Anfänger-Themen 2
Semox Matrix multiplizieren Java Basics - Anfänger-Themen 4
N Vektoren multiplizieren Java Basics - Anfänger-Themen 8
D Zwei Integer Arrays multiplizieren Java Basics - Anfänger-Themen 3
B Produkt ohne Multiplizieren? Java Basics - Anfänger-Themen 7
S [HILFE] Brüche addieren, multiplizieren, kürzen Java Basics - Anfänger-Themen 17
P Exponenten bei Potenzen multiplizieren Java Basics - Anfänger-Themen 4
G String aus Zahlen multiplizieren -> unendlich große ! Java Basics - Anfänger-Themen 13
M zwei zweidimensionale arrays multiplizieren Java Basics - Anfänger-Themen 2
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
D Inhalte von Stacks miteinander multiplizieren Java Basics - Anfänger-Themen 4
G Zwei mehrdimensionale Arrays multiplizieren Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben