2d array als Objekt

Stefan241

Mitglied
Ich würde gerne eine Matrix objektorientiert erzeugen.

Z.b eine 3x3 Matrix bei der ich in der Main Methode die Werte übergeben kann.
Weis jmd von euch wie man da schafft ich bin echt verzweifelt bisher hab ich es nur geschaft die Größe in der Main Methode einzustellen.
Wie muss ich den Konstruktor verändern das ich auch konkrete Werte eingeben kann?

public class Matrix {


double [][]matrix;


public Matrix(int z, int s) {
this.matrix = new double[z];
}
}

public class MatrixTest {

public static void main(String[] args) {

Matrix m1 = new Matrix(3,3);
}}
 

Stefan241

Mitglied
Vielen Dank für die Antwort


da hab ich wohl nicht vollständig kopiert .


ich meinte ich möchte in der Main ein neues Objekt Matrix erschaffen.
Und dort auch gleich mit Werten befüllen.
Z.b

0 3 2
1 2 1
3 1 2

wie mach ich das:(
 

Stefan241

Mitglied
ich verstehe wie man arrays befühlt nur wie ich es über den Konstruktor machen sollen. Hier nicht objektorientirte Variante

double m2[][] = {{0,3,2},
{1,2,1},
{3,1,2}} ;

Dies
 

Stefan241

Mitglied
ich verstehe wie man arrays befühlt nur wie ich es über den Konstruktor machen sollen. Hier nicht objektorientirte Variante

Java:
double m2[][] = {{0,3,2},
                        {1,2,1},
                         {3,1,2}} ;
Die kann aber nicht an nicht statische Methoden übergeben .

Die Werte müssen übergeben werden nicht zufällig generiert
 
Zuletzt bearbeitet:

JStein52

Top Contributor
warum geht das nicht so:
Code:
public Matrix(double[][] matrix) {
this.matrix = matrix;
}
und beim erzeuegen deines Matrix-Objektes übergibst du ein entsprechendes double-Array ?

Edit: und falls du eine vollständige Kopie des übergebenen Arrays anlegen willst kopierst du im Konstruktor noch jeden einzelnen Wert ...
 

Stefan241

Mitglied
Java:
 Matrix m1 = new Matrix({{0,3,2},
                                {1,2,1},
                                {3,1,2}});


wenn ich es so übergeben will funktioniert es nicht
 

Stefan241

Mitglied
Jetzt soll ich die Matrix mit einem Vektor multipliezieren, der vektor soll in der main generiert werden und übergeben werden.
Die Methode für die Multiplikation habe allerdings erhalte ich die Fehlermeldung
cannot make a static reference to the non-static method multiplyWithVector(double[]) from the type Matrix

Die Metode darf aber nicht statisch sein

wie schaff ich das
Java:
public class Matrix {
   

    double [][]matrix;
 
   

   
   
    public Matrix(double[][] matrix) {
        this.matrix = matrix; 
        }
   
   
   
    public double[] multiplyWithVector(double[] vector){
        int m = matrix.length;
        int n = matrix[0].length;
        if (vector.length != m) ;
        double[] y = new double[n];
        for (int j = 0; j < n; j++)
            for (int i = 0; i < m; i++)
                y[j] += matrix[i][j] * vector[i];
        return y;
    }

Java:
public class MatrixTest {

    public static void main(String[] args) {
       
    

        Matrix m1 = new Matrix(new double[][] {{1,2,3}, 
                                               {4,5,6},
                                               {4,5,6}});
       
           
        double vektor[] = {4,1,4};
       
       
        Matrix.multiplyWithVector(vektor);
 

Stefan241

Mitglied
für die Aufgabe genügt die methode

allerdings hab ich ein weiteres Problem

hier muss ich eine beliebig große matrix mit einer anderen beliebig großen Matrix multiplizieren dafür hab ich die methode und dieße funktioniert auch

Java:
    public static int[][] multiplyMatrices(double[][] m1, double[][] m2) {
        int[][] e = null;
        if (m1[0].length == m2.length) {
            int zm1 = m1.length;
            int sm1 = m1[0].length;
            int sm2 = m2[0].length;
            e = new int[zm1][sm2];
            for (int i = 0; i < zm1; i++) {
                for (int j = 0; j < sm2; j++) {
                    e[i][j] = 0;
                    for (int k = 0; k < sm1; k++) {
                      e[i][j] += m1[i][k] * m2[k][j];
                    }
                }
            }
        } else {
            int zeilen = m1.length;
            int spalten = m1[0].length;
            e = new int[zeilen][spalten];
            for (int i = 0; i < m1.length; i++) {
                for (int j = 0; j < m1[0].length; j++) {
                    e[i][j] = 0;
                }
            }
        }
        return e;
    }
ich soll diese methode nun wieder objektorientiert anwenden

quasi mit diesem Kopf

public Matrix multiplyWithMatrix(Matrix matrix);

wie kann ich dann diese beiden Matrizen übergeben und multiplizoe

Java:
Matrix m1 = new Matrix(new double[][] {{0,3,2},
                                               {1,2,1},
                                               {3,1,2}});
        Matrix m2 = new Matrix(new double[][] {{0,3,2},
            {1,2,1},
            {3,1,2}});
 

JStein52

Top Contributor
Aufruf wieder mit m1.multiplyWithMatrix(zweiteMatrix);

und in multiplyWithMatrix rufst du die Methode die du da oben hast auf. Erster Parameter ist this.matrix, zweiter ist zweiteMatrix.matrix .....

Edit: und das static gehört hier weg:
Code:
public static int[][] multiplyMatrices(double[][] m1, double[][] m2)
 

Stefan241

Mitglied
Ich hab jetzt folgende Main Methode
Diese soll laut Aufgabe auch so sein
Java:
    Matrix m1 = new Matrix(new double[][] {{0,3,2}, 
                                               {1,2,1},
                                               {3,1,2}});
        Matrix m2 = new Matrix(new double[][] {{5,3,2}, 
            {1,4,1},
            {1,2,2}});
        System.out.println(Arrays.deepToString(m1.multiplyMatrices(m2)));

Nur die Metode weis ich noch nicht wie ich die zweite Matrix übergeben soll, da dies ja wie die erste über die Klasse Matrix erschaffen wird.
Java:
    public  int[][] multiplyMatrices( double[][] m2) {
        int[][] e = null;
        if (matrix[0].length == m2.length) {
            int zm1 = matrix.length;
            int sm1 = matrix[0].length;
            int sm2 = m2[0].length;
            e = new int[zm1][sm2];
            for (int i = 0; i < zm1; i++) {
                for (int j = 0; j < sm2; j++) {
                    e[i][j] = 0;
                    for (int k = 0; k < sm1; k++) {
                      e[i][j] += matrix[i][k] * m2[k][j];
                    }
                }
            }
        } else {
            int zeilen = matrix.length;
            int spalten = matrix[0].length;
            e = new int[zeilen][spalten];
            for (int i = 0; i < matrix.length; i++) {
                for (int j = 0; j < matrix[0].length; j++) {
                    e[i][j] = 0;
                }
            }
        }
        return e;
    }
 

JStein52

Top Contributor
Also so:
Code:
public Matrix multiplyWithMatrix(Matrix matrix) {
   return new Matrix(multiplyMatrices(this.matrix, matrix.matrix));
}
 

JStein52

Top Contributor
Hoppla, überkreuzt. Du kannst ja die vorherige Methode multiplyMatrices verwenden, s.o.
Und du hattest zunächst da stehen dass multiplyWithMatrix ein Objekt vom Typ Matrix zurückliefern soll. So habe ich mein Beispiel nun gemacht ....
 

JStein52

Top Contributor
Du hast ja zwei Objekte vom Typ Matrix: das erste ist das bei dem die Methode aufgerufen wird (m1) und das zweite ist das welches als Parameter übergeben wird (m2)
Edit: und das erste sprichst du mit this an, das zweite eben über den Namen des Parameters (hier matrix)
 

Stefan241

Mitglied
Ich schaff des irgendwie nicht auf meine Methode zu übertragen

ich weis nicht wie ich dann m2 umbennen soll
es ist jetzt vielleicht unhöfflich wenn ich frag ob du meine Methode umschreiben könntest aber ich bin echt verzweifelt und wäre dir sehr dankbar
 

JStein52

Top Contributor
Also :
Code:
public double[][] multiplyMatrices(double[][] m1, double[][] m2) {
        double[][] e = null;
        if (m1[0].length == m2.length) {
            int zm1 = m1.length;
            int sm1 = m1[0].length;
            int sm2 = m2[0].length;
            e = new double[zm1][sm2];
            for (int i = 0; i < zm1; i++) {
                for (int j = 0; j < sm2; j++) {
                    e[i][j] = 0;
                    for (int k = 0; k < sm1; k++) {
                      e[i][j] += m1[i][k] * m2[k][j];
                    }
                }
            }
        } else {
            int zeilen = m1.length;
            int spalten = m1[0].length;
            e = new double[zeilen][spalten];
            for (int i = 0; i < m1.length; i++) {
                for (int j = 0; j < m1[0].length; j++) {
                    e[i][j] = 0;
                }
            }
        }
        return e;
    }

Dann:
Code:
public double[] multiplyWithMatrix(Matrix matrix) {
   return multiplyMatrices(this.matrix, matrix.matrix);
}

Und die main bleibt so wie du sie oben hast. Das sollte dann zueinander passen ...
 

JStein52

Top Contributor
Code:
  Matrix m1 = new Matrix(new double[][] {{0,3,2},
                                               {1,2,1},
                                               {3,1,2}});
        Matrix m2 = new Matrix(new double[][] {{5,3,2},
            {1,4,1},
            {1,2,2}});
System.out.println(Arrays.deepToString(m1.multiplyWithMatrix(m2)));
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
H Objekt im Array speichern Java Basics - Anfänger-Themen 2
P Objekt aus String-Array erzeugen Java Basics - Anfänger-Themen 104
C Objekt soll ein Array sein. Java Basics - Anfänger-Themen 15
Z Objekt Array führt zum NullPointerException Java Basics - Anfänger-Themen 2
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
G Objekt array befüllen und ausgeben Java Basics - Anfänger-Themen 3
S Klassen Objekt- Tabelle / Dynamisches 2Dimensionales Array für Objekte Java Basics - Anfänger-Themen 6
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
D Array Objekt wird überschrieben Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
P Objekt mit Werten aus Array füllen Java Basics - Anfänger-Themen 10
M bestimmen zu welchem Array ein Objekt "zugehört" Java Basics - Anfänger-Themen 5
J OOP Objekt in Array gespeichert, wie greife ich darauf zu? Java Basics - Anfänger-Themen 7
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
N String und Array objekt? Java Basics - Anfänger-Themen 3
D Objekt in Array abspeichern Java Basics - Anfänger-Themen 7
T Objekt Output zu String Array Java Basics - Anfänger-Themen 4
H Objekt aus array holen anhand des Objekttypen Java Basics - Anfänger-Themen 8
V 2D - Objekt Array Problem Java Basics - Anfänger-Themen 3
K Verschiedene (Thread) Objekt-Positionen (int) in einem Array zusammenfassen Java Basics - Anfänger-Themen 3
J Objekt-Array-Testklasse Java Basics - Anfänger-Themen 5
K Inhalt eines Elements aus dem Objekt Array auslesen Java Basics - Anfänger-Themen 9
M Objekt Array - keine ausgabe! Java Basics - Anfänger-Themen 8
K Objekt an Array übergeben Java Basics - Anfänger-Themen 3
B Objekt an das Ende eines Array stecken Java Basics - Anfänger-Themen 2
F OOP Objekt Array auslesen Java Basics - Anfänger-Themen 9
N Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
M Array List Objekt Entfernen Java Basics - Anfänger-Themen 15
J Serialisierung - Array-Objekt serialisieren/deserialisieren Java Basics - Anfänger-Themen 6
C Arraylist mit string array oder hashmap oder objekt? Java Basics - Anfänger-Themen 5
J Objekt-name in Array speichern Java Basics - Anfänger-Themen 12
B Array mehrmals als Objekt erzeugen Java Basics - Anfänger-Themen 17
O Array-Objekt erstellen Java Basics - Anfänger-Themen 11
Y Objekt Array Java Basics - Anfänger-Themen 16
G Objekt Array Java Basics - Anfänger-Themen 3
J StringBuffer-Objekt soll auf Char-Array zugreifen. Java Basics - Anfänger-Themen 4
L NullPointerExceptions bei Objekt array Java Basics - Anfänger-Themen 11
D Ist ein Array immer ein Objekt? Java Basics - Anfänger-Themen 2
K Array von einem eigenen Objekt erstellen Java Basics - Anfänger-Themen 5
B Array auslesen das als Objekt geliefert wurde Java Basics - Anfänger-Themen 2
M Objekt Array Java Basics - Anfänger-Themen 3
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben