Array dynamisch ausgeben

GetIT

Mitglied
Hi,

ich denke der Titel meines Post ist leicht irreführend. Sorry😳

Mal etwas genauer.
In php gibt es eine Methode -print_r- die mir ein Array in "lesbarer" Form ausgibt.
Prinzipiell habe ich das in java nachprogrammiert:
Java:
public class PrintArray {

	public static void main(String[] args) {
		String[][] testArray = { { "[0]" }, { "[1][0]", "[1][1]" }, { "[2][0]", "[2][1]", "[2][2]", "[2][3]" } };
		printArray(testArray); // 1

	}

	public static void printArray(String[][] array) {
		for (int rows = 0; rows < array.length; rows++) {
			if (array[rows].length == 1) {
				System.out.println("[" + rows + "] => " + array[rows][0] + ",");
			} else {
				System.out.println("[" + rows + "] => Array(");
				int innerRow = 0;
				for (int cols = 0; cols < array[rows].length; cols++) {
					System.out.println("    [" + innerRow + "] => " + array[rows][innerRow] + ",");
					innerRow++;
				}
				innerRow = 0;
				System.out.println("),");
			}
		}
	}

}
gibt aus
Code:
[0] => [0],
[1] => Array(
    [0] => [1][0],
    [1] => [1][1],
),
[2] => Array(
    [0] => [2][0],
    [1] => [2][1],
    [2] => [2][2],
    [3] => [2][3],
),

Das Problem:
Null dynamik.
(1)Ich muss wissen was für ein Array der Methode (printArray) übergeben wird (int, char, String),
(2)ich muss wissen wie "tief"(wie verschachtelt) das Array ist.

Für (1) habe ich eine Lösung. Ich konvertiere das Array beim Aufruf (s. im Code // 1) mit java.util.Arrays.asList() und übergebe das ganze als Liste an die Fkt. printArray.

Aber wie bekomme ich (2) gelöst ?
Die Liste mit asArray() wieder in ein Array umzuwandeln geht nicht - geht schon aber ich bekomme as Resultat dann nur Speicherstellen.

Bsp:
Java:
import java.util.List;

public static void main(String[] args) {
		String[][] testArray = { { "[0]" }, { "[1][0]", "[1][1]" }, { "[2][0]", "[2][1]", "[2][2]", "[2][3]" } };
		printArray1(Arrays.asList(testArray));
	}

public static void printArray1(List list) {
		Object[] listArray = list.toArray();
		System.out.println(listArray[0]);
	}

Gibt aus:
Code:
[Ljava.lang.String;@53bd815b
 
Zuletzt bearbeitet:
Das Problem:
Null dynamik.
(1)Ich muss wissen was für ein Array der Methode (printArray) übergeben wird (int, char, String),
(2)ich muss wissen wie "tief"(wie verschachtelt) das Array ist.

Für (1): In Java gibt es Generics, die wären möglicherweise für so einen Fall geeignet. Für einen Anfänger sollten diese aber noch nicht die große Rolle spielen.

Für (2): Nein musst du nicht wirklich wissen, du musst nur wissen ob du bei einem bestimmten Indexzugriff wieder ein Array bekommst oder dann schon einen "konkreten Typ" hat
 
Also wenns darum geht, Arrays in Strings zu verwandeln, gibt es die zwei Utility Funktionen
Java:
Arrays.toString(...); // Für eindimensionale Arrays
Arrays.deepToString(...); // Für n-dimensionale Arrays
 
Zuletzt bearbeitet:

Zurück
Oben