2D Array Matrizen

Samka

Mitglied
Hallo,
Java ist für mich noch Neuland, deshalb komme ich bei einer Teilaufgabe nicht weiter es geh darum einen Array zu extracten.
Leider habe ich keinen richtigen Ansatz dafür.
Danke im voraus
MfG Samka
 

Anhänge

  • Uebung9e.png
    Uebung9e.png
    31,2 KB · Aufrufe: 20
1. Überprüfen ob int Werte im Index enthalten sind
2. Schauen welche Werte vom Array enthalten sind
3. Einen neuen Array erstellen mit 2x2 oder nur einem Wert
(Achja man darf davon ausgehen daß die Matrizen wohlgeformt und quadratisch sind )
 
Wenn ich Dich richtig verstanden habe, dann ist 1. überflüssig, weil ein int-Array immer int-Werte enthält. Mit dem 2. Punkt meinst Du wahrscheinlich, ob die Arraygrenzen eingehalten werden. Und 3. warum nur 2x2 oder 1x1?

Geh mal von einem 10x10 Array array aus und dem Aufruf extractSubarray(array, 1, 1, 8, 8) aus. Wie groß wäre dann das Zielarray?
 
Java:
	public static int[][] es(int[][] a, int y1, int y2, int x1, int x2) {
		if (y1 < 0 || x1 < 0)
			return new int[0][0];
		if (y2 > a.length)
			y2 = a.length;
		if (x2 > a.length)
			x2 = a.length;
		int[][] b = new int[y2 - y1][x2 - x1];
		for (int y = y1; y < y2; y++) {
			for (int x = x1; x < x2 && x < a[y].length; x++) {
				b[y - y1][x - x1] = a[y][x];
			}
		}
		return b;
	}

	public static void main(String[] args) {
		System.out.println(Arrays.deepToString(es(new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }, 0, 2, 0, 2)));
		System.out.println(Arrays.deepToString(es(new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }, 2, 4, 2, 4)));
		System.out.println(Arrays.deepToString(es(new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8 } },    2, 4, 2, 4)));
	}

Wenn ich mich nicht verhaspelt habe dann sollte es das sein. Die Frage ist was bei ungültigen Parametern (zB <0) geschehen soll und was bei nicht "rechteckigen" Matrizen geschehen soll.

Ausgabezeile 3 gibt zB einfach [[0]] zurück. 🙁

/e Ich habe die (Parameter)Namen verkürzt damit die Zeilen nicht ewig lang werden.
 
Ich glaub der Löwenanteil wegen guter Erklärung gebührt @mihe7 .

Ich möchte aber dennoch dass die Fehlerfälle "korrekt" behandelt werden....
 

Zurück
Oben