# 2D-Array als Tabelle ausgeben ?



## misaki (5. Nov 2010)

Hallo,

ich verzweifle grade an einer Aufgabe die ich bekommen habe:
Schreiben Sie ein Programm, das eine positive int-Zahl n einliest und n Zeilen mit n Spalten ausdruckt dergestalt dass in Zeile i in Spalte j das Zeichen '*' gedruckt wird genau dann wenn i*i <= j gilt (und andernfalls das Zeichen '.'). 

Ich habe mich jetzt dran gesetzt und das ganze mal mit 0 und 1 versucht, weil der Compiler mit * und . maulte, dass das ja keine integer Zahlen werden. Dem Problem wollte ich mich aber später widmen, zuerst möchte ich, dass die Ausgabe grundsätzlich funktioniert.

Mein Code sieht folgendermaßen aus:


```
public class Bsp08 {

	public static void main(String[] args) {
	
	int n; // Anzahl der Spalten und Zeilen
	int i; // Nummer der Zeile
	int j; // Nummer der Spalte
	
	System.out.println("");
	System.out.println("Geben Sie eine positive, ganze Zahl fuer die Anzahl der Spalten und Zeilen an:");
	n = SavitchIn.readLineInt();
	
	int[][] matrix = new int [n][n];
	
	for (i=0; i < matrix.length; i++)
		for (j=0; j < matrix[i].length; j++)
			{if (i*i<=j)
				matrix[i][j] = 1;
			else 
				matrix[i][j] = 0;
			System.out.println(matrix[i][j] + "");};
	}
}
```

Nun ja. Die Ausgabe meiner Matrix sieht nicht tabellenförmig aus, was eigentlich mein Problem ist. Jeder einzelner Matrixwert bekommt eine einzelne Zeile - das wollen wir aber nicht, schließlich ist eine Tabelle mit n Zeilen und n Spalten gefragt. Wie kann ich so etwas ausgeben ?


----------



## Eldorado (5. Nov 2010)

```
for (i=0; i < matrix.length; i++){
        for (j=0; j < matrix[i].length; j++){
            if (i*i<=j)
                matrix[i][j] = 1;
            else 
                matrix[i][j] = 0;
            System.out.print(matrix[i][j] + "");
        }
        System.out.println():
}
```


Versuch mal so 

Und für die Darstellung der Zeichen nimmst du nen char statt nem int array.


----------



## eRaaaa (5. Nov 2010)

println = print line 
Es gibt aber auch nur print!
println kannst du nutzen um dann nach der inneren Schleife in die "nächste Zeile zu wechseln"


----------



## misaki (5. Nov 2010)

Ja, aber wenn ich nur print nehme, schreibt er mir alles in einer Wurst hin.
Und wenn ich folgendes nehm:


```
for (i=0; i < matrix.length; i++)
		for (j=0; j < matrix[i].length; j++)
			{if (i*i<=j)
				matrix[i][j] = 1;
			else 
				matrix[i][j] = 0;
			System.out.print(matrix[i][j] + "\t");}
			System.out.println();;
```

macht er auch keine Umbrüche, sondern nur Abstände zwischen die einzelnen Werte.


----------



## Misaki (5. Nov 2010)

Sorry, hab noch ein bisschen mit der Syntax rumgebastelt und jetzt stimmts!! Vielen Dank!!!!


----------



## dasd (16. Feb 2021)

Misaki hat gesagt.:


> Sorry, hab noch ein bisschen mit der Syntax rumgebastelt und jetzt stimmts!! Vielen Dank!!!!


was hast du gebastellt ???


----------



## dasd (16. Feb 2021)

Hier ist ein einfacher weg:

for(int i = 0;i < meinArray1.length;i++) {
    System.out.printf("%3d %3d°C\n",+i+1, meinArray1_); //C Schatz_


----------

