Werte aus Arrays auslesen funktioniert nicht

nuh

Mitglied
Hallo,
warum kann ich nicht die Werte aus einem Array auslesen. Trotz toString() Methode bekomme ich statt den int Werten nur Objektreferenzen 🙁

Wo liegt mein Fehler, hoffe einer kann mir helfen. Ist bestimmt was ganz einfaches.

Java:
package matrixaufgabe;

public class Matrixmultiplikation {
	



	public int[][] multiplyMatrices(int[][] m1, int[][] m2) {
		
		int[][] ergebnismatrix = null;

		int zeilenm1 = m1.length;
		int spaltenm1 = m1[0].length;
		int spalenm2 = m2[0].length;

		ergebnismatrix = new int[zeilenm1][spalenm2];

		for (int i = 0; i < zeilenm1; i++) {
			for (int j = 0; j < spalenm2; j++) {
				ergebnismatrix[i][j] = 0;
				for (int k = 0; k < spaltenm1; k++) {
					ergebnismatrix[i][j] += m1[i][k] * m2[k][j];
				}
			}
		}
		return ergebnismatrix;
	}
}

Java:
package matrixaufgabe;

public class Berechnung {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [][] m1 = {{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}};
		int [][] m2 = {{2, 2, 2, 2} ,{2, 2, 2, 2}, {2, 2, 2, 2}, {2, 2, 2, 2}};
		
		

		Matrixmultiplikation mm = new Matrixmultiplikation();
		
		for (int i = 0; i < m2.length; i++) {
			for (int j = 0; j < m2.length; j++) {
				System.out.println(mm.multiplyMatrices(m1, m2).toString());
			}
		}
		
		

	}

}

hier die Ausgabe [[I@15db9742
[[I@6d06d69c
[[I@7852e922
[[I@4e25154f
[[I@70dea4e
[[I@5c647e05
[[I@33909752
[[I@55f96302
[[I@3d4eac69
[[I@42a57993
[[I@75b84c92
[[I@6bc7c054
[[I@232204a1
[[I@4aa298b7
[[I@7d4991ad
[[I@28d93b30

:rtfm::rtfm::rtfm::rtfm:
 
Das liegt daran das die "toString" Methode von Arrays so programmiert ist.

Verwende stattdessen "Arrays.toString([DEIN Array])", genauere Erklärungen dazu findest du wie Sand am Meer ("java array to string")
 
Java:
public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] m1 = { { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 },
				{ 1, 1, 1, 1 } };
		int[][] m2 = { { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 },
				{ 2, 2, 2, 2 } };

		// Matrixmultiplikation mm = new Matrixmultiplikation();
		for (int i = 0; i < m1.length; i++) {
			System.out.println(Arrays.toString(m1[i]));
		}
		System.out.println("");
		for (int i = 0; i < m2.length; i++) {
			System.out.println(Arrays.toString(m2[i]));
		}

	}
 
Java:
public static void main(final String... args) {
		String[][][] foo = {
				{{"a", "b", "c"}},
				{{"d"}, {"e"}}
		};
		
		System.out.println(foo);
		System.out.println(foo[0]);
		System.out.println(foo[0][0]);
		System.out.println(foo[0][0][0]);
		
		System.out.println(Arrays.deepToString(foo));
		
		method1(foo);
		method2(foo);
	}
	
	private static void method1(String[][][] foo) {
		for(String[][] s0 : foo) {
			for(String[] s1 : s0) {
				for(String s : s1) {
					System.out.print(s + "; ");
				}
			}
		}
		System.out.println();
	}
	
	private static void method2(final Object[] foo) {
		if(foo.getClass().isArray()) {
			for(Object o : foo) {
				if(o.getClass().isArray()) {
					method2((Object[])o);					
				} else {
					System.out.print(o + "; ");
				}
			}
		}
	}

Nachvollziehbar ?
 
@jgh danke erstmal, aber damit bekomme ich ja nur die Werte zurück die ich anfangs definiert habe. Ich möchte aber eigentlich die multiplizierten Matrizen , die ich von der Methode mm.multiplyMatrices(m1, m2) bekomme, ausgeben.
 
Zuletzt bearbeitet:
na ja, das war ein Bsp wie man die Ausgabe einer Matrix hinbekommt...dachte das war das Prob, aber gut...

Java:
import java.util.Arrays;

public class Matrixmultiplikation {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[][] m1 = { { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, { 1, 1, 1, 1 },
				{ 1, 1, 1, 1 } };
		int[][] m2 = { { 2, 2, 2, 2 }, { 2, 2, 2, 2 }, { 2, 2, 2, 2 },
				{ 2, 2, 2, 2 } };

		int ergebnis[][] = new Matrixmultiplikation().multiplyMatrices(m1, m2);

		for (int i = 0; i < ergebnis.length; i++) {
			System.out.println(Arrays.toString(ergebnis[i]));
		}

	}

	public int[][] multiplyMatrices(int[][] m1, int[][] m2) {

		int[][] ergebnismatrix = null;

		int zeilenm1 = m1.length;
		int spaltenm1 = m1[0].length;
		int spalenm2 = m2[0].length;

		ergebnismatrix = new int[zeilenm1][spalenm2];

		for (int i = 0; i < zeilenm1; i++) {
			for (int j = 0; j < spalenm2; j++) {
				ergebnismatrix[i][j] = 0;
				for (int k = 0; k < spaltenm1; k++) {
					ergebnismatrix[i][j] += m1[i][k] * m2[k][j];
				}
			}
		}
		return ergebnismatrix;
	}
}
 

Neue Themen


Zurück
Oben