Zweidimensionales Array durch ToString ausgeben lassen

J

java_jay

Gast
Hallo,

Ich habe eine Klasse "Matrix" geschrieben, welche durch ein zweidimensionales Array, Matrizen erzeugt.
Soweit ist das alles klar, jedoch habe ich bei der toString-Methode meine Probleme.
Bisher habe ich folgenden Code, der jedoch nicht funktioniert:
Java:
	public String toString(double [][] matrix) {
	int n = matrix.length; //Spalten
	int m = matrix[0].length; //Zeilen
		for (int j=0; j<m; j++) {
			for (int i=0; i<n; i++) {
				return(matrix [i][j]+ " ");
			}

		}
	}

Wenn ich diese Code ausserhalb der Classe mit println anstelle von return schreiben, funktionert das.
Das Problem ist bei dieser Realisierung, dass Java das Return-Statment vermisst. (es wird in der For-Schleife anscheinden nicht angenommen).

So ich hoffe ich habe mich verständlich ausgedrückt :)

Danke schonmal!

gruß
jay
 

egospezia

Mitglied
Wann willst du das return eigentlich haben und wann hast du es eingesetzt?

Überleg mal, was das println macht und warum da ein Matrix-Block rauskommt. Du brauchst auf alle Fälle einen String, in dem du all die Matrixzeilen ablegen kannst, wenn du sie ausgeben willst. Java kann nur ein Return.
 
Zuletzt bearbeitet:
J

java_jay

Gast
Ich möchte später aus einer anderen Klasse heraus Rechenoperationen mit Matrizen durchführen. Dafür möchte ich dann durch den Befehl println(matrix) die komplette Matrix ausgeben lassen.

Also alles in einen String speichern und ausgeben? Wie kann man das denn realisieren?
 

egospezia

Mitglied
Also die willst die unveränderte Matrix in Matrizenform über print ausgeben?

Du kannst das in einem String machen, statt sofortiger Ausgabe weist du den Wert einer neuen Variablen zu und hängst im nächsten Schleifendurchlauf nur hinten an mit dem Tabulator für die Spalten. Mit dem Zeilenumbruch verfährst du ähnlich in der anderen For-Schleife.
 

xehpuk

Top Contributor
Ich hab mir auch mal so ein kleines Matrizenprogramm geschrieben, da hab ichs so umgesetzt:
Java:
public final class Matrix {
	private final int[][] numbers;
	private final int rows;
	private final int columns;

	@Override
	public String toString() {
		final StringBuilder result = new StringBuilder();
		for (int m = 0; m < rows; ) {
			for (int n = 0; n < columns; ) {
				result.append(numbers[m][n]);
				if (++n < columns) result.append(' ');
			}
			if (++m < rows) result.append('\n');
		}
		return result.toString();
	}
}

Was du momentan machst: Höchstens einen einzigen Wert ausgeben. Wenn die Matrix "null-dimensioniert" ist, wird die Schleife nicht betreten, wodurch es keinen Rückgabewert gäbe. Daher das Compilergemecker.
 
J

java_jay

Gast
Danke schonmal für die Tipps!

Ich hab es jetzt so umgeschrieben:
Java:
	public String toString(double [][] matrix) {
	StringBuilder matrixString = new StringBuilder();
	int n = matrix.length; 
	int m = matrix[0].length;
		for (int j=0; j<m; j++) {
			for (int i=0; i<n; i++) {
				matrixString.append(matrix [i][j]+" ");
			}
		matrixString.append('\n');
		}
		return matrixString.toString();
	}

Kompilieren funktioniert fehlerfrei, jedoch bekomme ich anstatt der eigentlichen Ausgabe der Matrix immer etwas in der Art hier:

Matrix@18352d8


gruß
 
G

Gast2

Gast
Falls du eine eigene Klasse Matrix hast und die toString methode überschreiben willst dann is deine Methode falsch. Die toString-Methode hat keine übergabeparameter.
Wenn du die MEthode mit nem @Override kennzeichnest dann würde der Compiler auch meckern dass es die Methode nicht gibt.
 
J

java_jay

Gast
Hallo Eike,

Genau das war das Problem. Ich wollte die Methode nicht überschreiben.
Hatte ganz vergessen, dass die toString-Methode keine Übergabeparameter hat.
Jetzt läuft es! Danke (auch an die anderen Helfer)!

Gruß java_jay
 

eLogic

Aktives Mitglied
Warum eingentlich der Umweg auf zwei Integer Variablen?
Wieso ist denn bei dir j und i vertauscht muss das nicht andersrum?
return muss als letztes geschrieben werden...
Bei deinem ersten Post springt er immer mit dem Wert in matrix[0][0] als Rückgabewert raus.


Java:
public String toString(double [][] matrix) {
    StringBuilder matrixString = new StringBuilder();
    for (int j=0; j<matrix.length; j++) {
        for (int i=0; i<matrix[i].length; i++) {
            matrixString.append(matrix [j][i]+" ");
        }
    matrixString.append('\n');
    }
    return matrixString.toString();
}

Gruß eLogic
 
Zuletzt bearbeitet:
X

xehpu

Gast
Wenn die Matrix "null-dimensioniert" ist, wird die Schleife nicht betreten, wodurch es keinen Rückgabewert gäbe. Daher das Compilergemecker.

Die Meldung wird davon unabhängig ausgegeben.

Java:
public boolean m() {
    while (true) {
        return true;
    }
}
wäre es syntaktisch auch nicht korrekt.
 
G

Gast2

Gast
Java:
public boolean m() {
    while (true) {
        return true;
    }
}
Doch. Die Methode lässt sich ohne probleme kompilieren. Macht natürlich nicht sonderlich viel sinn ;)
 
X

xehpu

Gast
Der Compiler wegoptimiert das.

Java:
public boolean m() {
    int i = 5;
    while (i == 5) {
        return true;
    }
}
würde aber nicht mehr compilieren.
 
G

Gast2

Gast
Weil das Statement vor der klammer kein return Statement ist.
Das letzte Statement muss nicht immer ein return sein...
Folgendes wäre auch gültig:
Java:
	public static boolean m() {
		int i = 5;
	    while (i == 5) {
	        return true;
	    }
	    
	    throw new IllegalStateException("em...this should never happen...");
	}
 
J

java_jay

Gast
@eLogik: Da hatte ich in der Tat etwas vertauscht.

Hier nochmal die (nun hoffentlich) richtige Version: (angezeigt wird es so auf jeden fall richtig)

Java:
	public String toString() {
	StringBuilder matrixString = new StringBuilder();
		for (int i=0; i<matrix.length; i++) {
			for (int j=0; j<matrix[0].length; j++) {
				matrixString.append(this.matrix [i][j]+" ");
			}
		matrixString.append('\n');
		}
		return matrixString.toString();
	}


Gruß
 

eLogic

Aktives Mitglied
:bae::bae::bae::applaus::applaus::D:D

Java:
import java.io.IOException;


public class meineHausaufgaben {

	public static void main(String[] args) throws IOException, InterruptedException {

		char a = 78;
		String eingabe = "";
		
		while(true){

			a = 78;
			eingabe = eingabe+a+" ";
			System.out.println(eingabe);
			cls();
			for(int i = 0;i<2;i++){
				eingabe = eingabe+(char)(a+1)+" ";		
				System.out.println(eingabe);
				cls();
			}
			a=66;
			eingabe = eingabe+a+" ";
			System.out.println(eingabe);
			eingabe = "";
			cls();
			System.out.println();
			cls();
		}
	}
	public static void cls() throws InterruptedException{
		Thread.sleep(300);
		for(int i = 0;i<100;i++){
			System.out.print("\n");		
		}
	}
}
 
Zuletzt bearbeitet:
X

xehpu

Gast
Ohne Zeichentabelle steigt man dort nicht durch ;)

Die Aufgaben sehen tatsächlich so aus, als wären sie HA.

Formatiere den vorletzten Code mal:

Java:
    private int[][] matrix;

    public String toString() {
        StringBuilder matrixString = new StringBuilder();
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[0].length; j++) {
                matrixString.append(matrix[i][j] + " "); // this-Referenz entfernt
            }
            matrixString.append('\n');
        }
        return matrixString.toString();
    }

In Zeile 6 hat j immer die Werte von 0 bis matrix[0].length - 1; matrix muss aber nicht immer so sein, das alle int-Arrays die gleiche Länge haben oder doch?
Man könnt matrix verwenden, für die Länge der i-ten Zeile.
Muss jedes Element von matrix eine int-Array-Referenz sein oder kann auch null referenziert sein? Wenn das nicht is, muss eben vorher auf null-Elemente geprüft werden.

Könnte matrix null sein? Macht es sinn, das die Methode eine Objektmethode ist, also nicht mit static gekennzeichnet ist? Wenn matrix wesentlich die Klasse mmacht, dann wahrscheinlich schon.

Sokönnte man es auch so schreiben:
Java:
    private int[][] matrix;

    public static String tdats(int[][] iaa) {
        if (iaa == null) {
            return "null array";
        }

        StringBuilder b = new StringBuilder();
        for (int i = 0; i < iaa.length; i++) {
            if (iaa[i] == null) {
                b.append("null");
            } else {
                for (int j = 0; j < iaa[i].length; j++) {
                    b.append(iaa[i][j]);
                    b.append(' ');
                }
            }
            b.append('\n');
        }
        return b.toString();
    }

    public String toString() {
        return tdats(matrix);
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
P Zweidimensionales Array als Tabelle mit befüllten Zahlen Java Basics - Anfänger-Themen 10
Yasemin bahar zweidimensionales Array Java Basics - Anfänger-Themen 5
O zweidimensionales array in eine csv-Datei Java Basics - Anfänger-Themen 1
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
I Java zweidimensionales array befüllen mit for-schleife Java Basics - Anfänger-Themen 2
J zweidimensionales Array Java Basics - Anfänger-Themen 1
S Zweidimensionales Array in ein eindimensionales Array speichern Java Basics - Anfänger-Themen 6
J Zweidimensionales array kopieren und in eindimensionales überführen Java Basics - Anfänger-Themen 304
X Java zweidimensionales Array Java Basics - Anfänger-Themen 5
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
F Erste Schritte zweidimensionales array Java Basics - Anfänger-Themen 2
J Erste Schritte zweidimensionales Array Muster befüllen. Java Basics - Anfänger-Themen 4
K drei eindimensionale Arrays in ein zweidimensionales Array Java Basics - Anfänger-Themen 10
K Zweidimensionales Array erstellen und zufällig mit 0 und 1 füllen Java Basics - Anfänger-Themen 11
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
W Erste Schritte Zweidimensionales Array - Gerade Zahlen anzeigen lassen Java Basics - Anfänger-Themen 3
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
C ZweiDimensionales Array erstellen und Spiegeln Java Basics - Anfänger-Themen 1
H zweidimensionales array füllen Java Basics - Anfänger-Themen 6
D Zweidimensionales Array ( Java Basics - Anfänger-Themen 2
D Zweidimensionales Array (Länge) Java Basics - Anfänger-Themen 2
M Zweidimensionales Array aus Textdatei gewinnen Java Basics - Anfänger-Themen 6
M Zweidimensionales Array um 1 addieren Java Basics - Anfänger-Themen 3
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
C Methoden Diagonalen am best. Punkt im zweidimensionales array finden Java Basics - Anfänger-Themen 3
S Zweidimensionales Array mit Diagonalen Java Basics - Anfänger-Themen 9
M Zugriffsproblem auf (zweidimensionales) Array in einer ArrayList Java Basics - Anfänger-Themen 15
C Datentypen Zweidimensionales Array mit String und int Java Basics - Anfänger-Themen 3
W Datentypen Zweidimensionales Boolean Array Java Basics - Anfänger-Themen 13
A Zweidimensionales Array Java Basics - Anfänger-Themen 3
M Zweidimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
C zweidimensionales Array sortieren Java Basics - Anfänger-Themen 6
B Zweidimensionales Array durchsuchen und ändern Java Basics - Anfänger-Themen 8
B Zweidimensionales Array mit boolean Werten Java Basics - Anfänger-Themen 3
M Zweidimensionales Array befüllen Java Basics - Anfänger-Themen 4
C Zweidimensionales String Array initialisieren Java Basics - Anfänger-Themen 2
S Zweidimensionales Array mit Schleife summieren Java Basics - Anfänger-Themen 2
N zweidimensionales array größe bestimmen Java Basics - Anfänger-Themen 1
F Datentypen Zweidimensionales Array füllen Java Basics - Anfänger-Themen 6
S zweidimensionales ARRAY Java Basics - Anfänger-Themen 2
S zweidimensionales Array Java Basics - Anfänger-Themen 6
berti99 Zweidimensionales Array befüllen Java Basics - Anfänger-Themen 5
U Zweidimensionales Array mit Eindimensionalem Array Java Basics - Anfänger-Themen 7
J zweidimensionales Array einselen und ausgeben Java Basics - Anfänger-Themen 15
G Zweidimensionales Array - dynamisch Java Basics - Anfänger-Themen 4
M Zweidimensionales Array Java Basics - Anfänger-Themen 3
G zweidimensionales Array vergrößern Java Basics - Anfänger-Themen 3
M Zweidimensionales dynamisches Array füllen Java Basics - Anfänger-Themen 2
J zweidimensionales Array Java Basics - Anfänger-Themen 3
M Zweidimensionales String-Array initialisieren Java Basics - Anfänger-Themen 6
P zweidimensionales Array erstellen Java Basics - Anfänger-Themen 9
D erste spalte eines zweidimensionales Array sortieren ??!! Java Basics - Anfänger-Themen 2
N zweidimensionales 10x10 Feld erstellen Java Basics - Anfänger-Themen 3
D aus 2 arrays ein zweidimensionales formen Java Basics - Anfänger-Themen 9
R dynamisches zweidimensionales Feld erzeugen Java Basics - Anfänger-Themen 8
V Zweidimensionales Ganzzahlfeld 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
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

Ähnliche Java Themen

Neue Themen


Oben