Aufgabe Hilfe

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

[CODE lang="java" title="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;
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 = arr;
}
}
return inputArray;
}[/CODE]
 

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

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

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

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

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 ?;/
 

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

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

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
 
K

kneitzel

Gast
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

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

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.
[CODE lang="java" title="ExtendArrayTest" highlight="4-6,10-14,20-25,29-30"]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;
}

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("");
}
}
}[/CODE]
 

BMW

Neues Mitglied
Hello folks!

I have a question. I have the same question, but instead of "zero = 0" I have to write "one = 1".
Java:
    int maxArray = 0;
    for (int i = 0; i <inputArray.length; i ++) {
        if (inputArray [i] .length> maxArray) // looks for longest array
            maxArray = inputArray [i] .length;
    }
    int[][] longArray = new int [inputArray.length] [maxArray];
    for (int j = 0; j <inputArray.length; j ++) {
        int diff = maxArray - inputArray [j] .length;
        if (j% 1 == 0) {
            for (int i = 0; i <inputArray [j] .length; i ++) {
                longArray [j] [i + diff] = inputArray [j] [i];
            }
        } else {
            for (int i = 1; i <inputArray [j] .length; i ++) {
                longArray [j] [i] = inputArray [j] [i];
            }
        }
    }

    return longArray;
}

But I have the result:
Code:
0 0 0 4    
0 1 2 3    
0 0 5 6    
7 8 9 1
 

Anhänge

  • 2.png
    2.png
    57,2 KB · Aufrufe: 1
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
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
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J boolean aufgabe Java Basics - Anfänger-Themen 9
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
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 18
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

Ähnliche Java Themen

Neue Themen


Oben