Aufgabe Hilfe

dieter000

dieter000

Mitglied
Die Aufgabe ist die Arrays von Zeilen jeweils mit 0ern aufzufüllen sodass sie die gleiche länge haben ein Beispiel:
1609163844386.png


Das habe ich bis jetzt aber es funktioniert nicht wirklich:/:
 private static int[][] extendArray(int[][] inputArray) {
        int length = 0;
        for (int[] item : inputArray) {
            if (item.length > length)                   //sucht längstes Array
                length = item.length;
        }
        for (int i = 0; i < inputArray.length; i++) {
            int[] currentArr = inputArray[i];
            if (currentArr.length < length) {
                int result = length - currentArr.length;       //Differenz der Länge des akt. Arrays und längsten Arrays

                int[] arr = new int[length];
                for (int j = 0; j < currentArr.length; j++) {
                    arr[length-1-j] = currentArr[currentArr.length-1-j];
                    if (j < result) {
                        arr[j] = 0;                           //mit Nullen auffüllen
                    }
                    else {
                        arr[j] = currentArr[j - result];
                    }
                }
                inputArray[i] = arr;
            }
        }
        return inputArray;
    }
 
krgewb

krgewb

Top Contributor
Bisher hast du also:

Java:
public class Hauptprogramm {

	public static void main(String[] args) {

		int[][] a = extendArray(new int[][] { { 4 }, { 1, 2, 3 }, { 5, 6 }, { 7, 8, 9, 1 } });

		for (int y = 0; y < a.length; y++) {
			for (int x = 0; x < a[y].length; x++) {
				System.out.print(a[y][x] + " ");
			}
			System.out.println("");
		}
	}

	private static int[][] extendArray(int[][] inputArray) {
		int length = 0;
		for (int[] item : inputArray) {
			if (item.length > length) // sucht längstes Array
				length = item.length;
		}
		for (int i = 0; i < inputArray.length; i++) {
			int[] currentArr = inputArray[i];
			if (currentArr.length < length) {
				int result = length - currentArr.length; // Differenz der Länge des akt. Arrays und längsten Arrays

				int[] arr = new int[length];
				for (int j = 0; j < currentArr.length; j++) {
					arr[length - 1 - j] = currentArr[currentArr.length - 1 - j];
					if (j < result) {
						arr[j] = 0; // mit Nullen auffüllen
					} else {
						arr[j] = currentArr[j - result];
					}
				}
				inputArray[i] = arr;
			}
		}
		return inputArray;
	}
}

Ausgabe:
Java:
0 0 0 4 
0 1 2 3 
0 0 5 6 
7 8 9 1

In der Ausgabe ist die zweite Zeile falsch. Es muss 1230 lauten und nicht 0123. Ich weiß nicht, nach welcher Regel das entschieden werden soll.
 
dieter000

dieter000

Mitglied
Bisher hast du also:

Java:
public class Hauptprogramm {

    public static void main(String[] args) {

        int[][] a = extendArray(new int[][] { { 4 }, { 1, 2, 3 }, { 5, 6 }, { 7, 8, 9, 1 } });

        for (int y = 0; y < a.length; y++) {
            for (int x = 0; x < a[y].length; x++) {
                System.out.print(a[y][x] + " ");
            }
            System.out.println("");
        }
    }

    private static int[][] extendArray(int[][] inputArray) {
        int length = 0;
        for (int[] item : inputArray) {
            if (item.length > length) // sucht längstes Array
                length = item.length;
        }
        for (int i = 0; i < inputArray.length; i++) {
            int[] currentArr = inputArray[i];
            if (currentArr.length < length) {
                int result = length - currentArr.length; // Differenz der Länge des akt. Arrays und längsten Arrays

                int[] arr = new int[length];
                for (int j = 0; j < currentArr.length; j++) {
                    arr[length - 1 - j] = currentArr[currentArr.length - 1 - j];
                    if (j < result) {
                        arr[j] = 0; // mit Nullen auffüllen
                    } else {
                        arr[j] = currentArr[j - result];
                    }
                }
                inputArray[i] = arr;
            }
        }
        return inputArray;
    }
}

Ausgabe:
Java:
0 0 0 4
0 1 2 3
0 0 5 6
7 8 9 1

In der Ausgabe ist die zweite Zeile falsch. Es muss 1230 sein und nicht 0123.
es soll immer abwechselnd die zeilen auffüllen
 
krgewb

krgewb

Top Contributor
Achso. "Immer abwechselnd" lässt sich mit modulo realisieren.
zeilenindex % 2 == 0 --> Gerade
zeilenindex % 2 == 1 --> Ungerade
 
D

DrPils

Bekanntes Mitglied
Also deine Zeilen sollen abwechselnd erst von links und rechts mit nullen aufgefuellt werden.
Du gehst doch dein Array Zeile fuer Zeile durch.
Die erste Zeile hat den index 0, die zweite 1, die dritte 2, ....
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0
...
 
dieter000

dieter000

Mitglied
Also deine Zeilen sollen abwechselnd erst von links und rechts mit nullen aufgefuellt werden.
Du gehst doch dein Array Zeile fuer Zeile durch.
Die erste Zeile hat den index 0, die zweite 1, die dritte 2, ....
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0
...
ja genau si habe ich es mir auch gedacht aber wie setzte ich das mit dem index umhabe gedacht irgendwie currentArr[0] % 2 = 0 ?;/
 
D

DrPils

Bekanntes Mitglied
currentArr[0] % 2 = 0
da wuerdest du ja pruefen ob der int auf index 0 gerade ist.

In deinen for schleifen arbeitest du doch mit dem jeweiligen index

Java:
for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                if (j % 2 == 0) {
                    System.out.println("Gerade Zeile");
                } else {
                    System.out.println("Ungerade Zeile");
                }
            }
        }
 
krgewb

krgewb

Top Contributor
Nein. Wenn du du das so schreibst (wegen den zwei Stellen mit length), dann repräsentiert i die Zeile und j die Spalte.

dieter000 macht es anders. Er schreibt nie "meinArray[y][x]", sondern zieht das eindimensionale Array heraus.
Das bin ich derzeit nicht gewohnt und kann bzw. will da nicht helfen.
 
dieter000

dieter000

Mitglied
hallo, ich habe es leider noch nicht geschafft, habe sehr viele ansätze probiert, aber leider nicht geschafft, bin grundsätzlich beim gleichen wie am Anfang hier... würde mich über eine antwort freuen
 
kneitzel

kneitzel

Top Contributor
Bei so Problemen wäre mein Ratschlag immer: Teile und Herrsche!

Also zerteile das Problem in Teilprobleme um dann nur noch die Teilprobleme lösen zu müssen.

Das macht den Code sofort übersichtlicher und einfacher. Und man findet leichter Lösungen für Probleme.
(Und dabei immer auf vernünftige Namen achten. bei Dir kommt man leicht durcheinander: i, j, inputArr, currentArr, ... Aber auch das wird einfacher, denn je kleiner die Methoden werden, desto weniger Variablen kommen in der Methode vor)

Und wenn Du ein Array von int anlegst, dann hast du ja die 0er schon direkt. Also die 0er zum Auffüllen musst Du nicht mehr schreiben.

Wenn du nun { 1, 2 } auf 5 Stellen erweiterst, was ist dann der Unterschied?
Mal fängst du bei 0 an, die Werte herein zu kopieren und mal bei 5 - 2 = 3.

Also ich würde Dir raten, das einmal zu zergliedern in mehrere Methoden um dann zu schauen, ob Du dann klar gekommen bist.
Dann gibt es auch keine Aussage wie in #13 mehr, denn auch wir können schneller und einfacher einen Überblick gewinnen....
 
krgewb

krgewb

Top Contributor
Ich erzeuge einfach ein neues Array. Da ist jedes Felder schon mit einer Null gefüllt.
Java:
public class Hauptprogramm {

    public static void main(String[] args) {

        int[][] a = extendArray(new int[][] { { 4 }, { 1, 2, 3 }, { 5, 6 }, { 7, 8, 9, 1 } });

        for (int y = 0; y < a.length; y++) {
            for (int x = 0; x < a[y].length; x++) {
                System.out.print(a[y][x] + " ");
            }
            System.out.println("");
        }
    }

    private static int[][] extendArray(int[][] inputArray) {

        int lengthOfLongestArray = 0;

        for (int y = 0; y < inputArray.length; y++) {
            if (inputArray[y].length > lengthOfLongestArray) {
                lengthOfLongestArray = inputArray[y].length;
            }
        }

        int[][] newArray = new int[inputArray.length][lengthOfLongestArray];

        for (int y = 0; y < inputArray.length; y++) {
            int diff = lengthOfLongestArray - inputArray[y].length;
            if (y % 2 == 0) {
                for (int i = 0; i < inputArray[y].length; i++) {
                    newArray[y][i + diff] = inputArray[y][i];
                }
            } else {
                for (int i = 0; i < inputArray[y].length; i++) {
                    newArray[y][i] = inputArray[y][i];
                }
            }
        }

        return newArray;
    }

}

Ausgabe:
Java:
0 0 0 4 
1 2 3 0 
0 0 5 6 
7 8 9 1
 
Blender3D

Blender3D

Top Contributor
Teile und Herrsche!
Treffender kann man es nicht formulieren.
Die Teilprobleme:
1) Ermittle die maximale Zeilenlänge der Quelle
Java:
int getMaxArrayLenght(int[][] array)
2) Erzeuge ein passendes Ziel
3) Kopiere jede Zeile der Quelle nach dem Ziel mit der Bedingung
Java:
void copyToPos(int[] source, int[] destination, int start)
gerade Zeilen werden auf Position <maximaler Länge - Zeilen Länge>++
ungerade Zeilen auf Position <0>++ kopiert.
4) gib das Ergebnis aus
Java:
void printArray(int[][] array)

Nachdem man obige einfache Funktionen erstellt hat, ist es dann ein Leichtes das Hauptproblem zu lösen. ;)
Da @krgewb oben bereits eine Lösung gepostet hat folgt hier die Teile und Herrsche Variante.
ExtendArrayTest:
public class ExtendArrayTest {
    
    public static void main(String[] args) {
        int[][] testArray = new int[][] { { 1, 3, 2 }, { 5, 1 }, { 6, 8, 5, 4 }, { 9, 4, 1, 9, 2 },
                { 1, 8, 7, 5, 3, 2, 5 }, { 3 } };
        printArray(fillWithZeroSwapped(testArray));
    }

    private static int[][] fillWithZeroSwapped(int[][] source) {
        int max = getMaxArrayLenght(source); // ermittle maximale Länge
        int[][] destination = new int[source.length][max]; // erzeuge größes Array
        for (int row = 0; row < source.length; row++) {
            int start = row % 2 == 0 ? max - source[row].length : 0;
            copyToPos(source[row], destination[row], start); // kopiere Zeile nach start Spalte
        }
        return destination;
    }

    private static int getMaxArrayLenght(int[][] array) {
        int maxLength = 0;
        for (int row = 0; row < array.length; row++) {
            if (maxLength < array[row].length)
                maxLength = array[row].length;
        }
        return maxLength;
    }

    private static void copyToPos(int[] source, int[] destination, int start) {
        for (int i = 0; i < source.length; i++)
            destination[start + i] = source[i];
    }

    private static void printArray(int[][] array) {
        for (int row = 0; row < array.length; row++) {
            for (int column = 0; column < array[row].length; column++)
                System.out.print(array[row][column] + " ");
            System.out.println("");
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12
S Hilfe für Aufgabe Java Basics - Anfänger-Themen 4
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
V Hilfe Aufgabe Zahlen Java Basics - Anfänger-Themen 9
O Hilfe bei Aufgabe Java Basics - Anfänger-Themen 3
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
D Hilfe bei Verständnis von Aufgabe Java Basics - Anfänger-Themen 1
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
K Erste Schritte Hilfe bei Aufgabe Java Basics - Anfänger-Themen 20
M Hilfe bei array Aufgabe. Java Basics - Anfänger-Themen 2
B Programmier - Aufgabe Hilfe :( Java Basics - Anfänger-Themen 0
B Programmier - Aufgabe ohne Ahnung Hilfe :( Java Basics - Anfänger-Themen 5
R hilfe bei Aufgabe Java Basics - Anfänger-Themen 1
J Hilfe mit Aufgabe Java Basics - Anfänger-Themen 2
P Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 9
N Hilfe bei function aufgabe! Java Basics - Anfänger-Themen 3
Q Vererbung Kleine Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 5
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
I Hilfe bei Aufgabe Java Basics - Anfänger-Themen 2
S Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 11
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
S Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 19
P HILFE !!! erste aufgabe beim programmieren Java Basics - Anfänger-Themen 13
3 Bitte um Hilfe bei Lösung einer Aufgabe Java Basics - Anfänger-Themen 16
M Hilfe bei Java-Aufgabe Java Basics - Anfänger-Themen 15
A [Hilfe] einfache Aufgabe Java Basics - Anfänger-Themen 26
T Problem mit Aufgabe..bitte um Hilfe Java Basics - Anfänger-Themen 8
F Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 2
G Hilfe zur einer Aufgabe: Datumsüberprüfung beim Gregorianis Java Basics - Anfänger-Themen 2
A Uni-Aufgabe - brauche Hilfe Java Basics - Anfänger-Themen 15
S Brauche hilfe zu dieser AUfgabe Java Basics - Anfänger-Themen 4
D Java Aufgabe fürs Studium (bitte um Hilfe) Java Basics - Anfänger-Themen 8
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 17
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
S Sortieralgorithmus - Aufgabe mit Lösungsidee Java Basics - Anfänger-Themen 20
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
H aufgabe 4 Java Basics - Anfänger-Themen 297
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H array aufgabe Java Basics - Anfänger-Themen 13
H aufgabe Java Basics - Anfänger-Themen 9
H lösung aufgabe Java Basics - Anfänger-Themen 12
H java online aufgabe Java Basics - Anfänger-Themen 4
H Array aufgabe Java Basics - Anfänger-Themen 7
H oop aufgabe probe kalusur Java Basics - Anfänger-Themen 11
H oop aufgabe Java Basics - Anfänger-Themen 19
H JAVA AUFGABE Java Basics - Anfänger-Themen 7
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
J Problem bei Aufgabe "Geldstückelung" Java Basics - Anfänger-Themen 5
P Problem bei Java-Aufgabe Java Basics - Anfänger-Themen 12
B Verständnis Frage zu der Aufgabe Java Basics - Anfänger-Themen 30
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
F Problem mit der Aufgabe(Array) Java Basics - Anfänger-Themen 21
C Problem mit der Aufgabe Java Basics - Anfänger-Themen 3
B For Schleife Aufgabe Java Basics - Anfänger-Themen 13
J Bradley Kjell java Aufgabe Java Basics - Anfänger-Themen 3
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18

Ähnliche Java Themen

Anzeige

Neue Themen


Oben