Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen

Reykja

Aktives Mitglied
Guten Abend
bei dieser Aufgabe sollen die Zeilen des Arrays abwechselnd links und rechts mit Nullen aufgefüllt werden. Meine Methode tut das allerdings nur von links nach rechts weil ich nicht weiß wie man nach jeder Zeile wechselt. Hätte jemand eine Idee? LG
richtig wäre z.B. bei int[][] array = new int[][]{{1, 2, 3}, {4}, {5, 6}, {7, 8, 9, 1}}; kommt
0123
4000
00
56
7891

Java:
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 < length; j++) {
                    if (j < result) {                       
                        arr[j] = 0;                           //mit Nullen auffüllen
                    }
                    else {
                        arr[j] = currentArr[j - result];
                    }
                }
                inputArray[i] = arr;
            }
        }
        return inputArray;
    }
 
K

kneitzel

Gast
Zwei Ansätze. Der erste wäre einfach, Deinen aktuellen Code weiter zu verwenden:

Die Frage ist doch nur, was du zuerst machst. Derzeit schreibst du zuerst die 0 um dann am Ende die zahlen zu kopieren.
Aber du kannst doch den Code bestimmt so umschreiben (Behalte aber den aktuellen Code noch), so dass in der inneren for schleife erst die Werte des Arrays kopiert werden um dann am Ende 0en rein zu stecken.

Dann kannst Du dir überlegen, wie du erkennen kannst, wie du das machen sollst ... schreib dir dazu einfach den index einmal auf... Bei welchen Werten ist das auffüllen rechts? bei welchen links? Fällt Dir da evtl. ein Kriterium auf?

Der andere Ansatz ist etwas anders:
Wenn Du ein neues in Array erzeugst: Was für Werte stehen denn dann da drin? Was für Werte musst Du also alle rein schreiben?
Was bleibt denn dann unter dem Strich?
 

athkougr

Mitglied
Du kannst auch folgendes versuchen. Als anfang initialisiere eine boolean Variable z.B left mit true; Du führst die zweite for-Schleife und prüfst ob left true oder false ist. Je nach Wert von left fügst du erst die Nullen und dann die Zahlen oder umgekehrt. Wenn die innere for-Schleife zu ende ist änderst du den Wert von left.
 
K

kneitzel

Gast
Also dem entnehme ich, dass du jetzt keine 0en mehr schreiben willst, sehr gut.

Mit dem Modulo hast du Recht. Genau so dachte ich es mir.

Aber kannst du die schleife aus #4 noch so anpassen, dass du kein if mehr brauchst?
Bis wohin läuft die Schleife und bis wohin brauchst du es nur? Wenn du das etwas 'optimiert' bekommen würdest, dann wäre es super.

Dann könntest du dies auch bei der anderen Variante anwenden - da wird der Code dann auch schön einfach.

Der generelle Ansatz ist halt: du gehst über die Werte eines Arrays um diese in einem anderen Array einzutragen.
Die zweite Überlegung ist dann der Ziel Index. Wie sieht der jeweils aus?
 

Reykja

Aktives Mitglied
also die Schleife läuft bis 4, brauchen tue ich sie allerdings nur bis currentArr.length, sprich:
Java:
for (int j = 0; j < currentArr.length; j++) {
    arr[j] = currentArr[j];
 
K

kneitzel

Gast
Ja genau. Und wie würde diese Schleife für den anderen Fall aussehen? Könntest du diesen Code so anpassen, dass die Werte am Ende des Arrays sind? Sozusagen mit zwei kleinen Änderungen...
 
K

kneitzel

Gast
Kleiner Tipp für morgen: es geht in erster Linie nur um dass arr[j] in der Schleife, das angepasst werden muss.
 

Reykja

Aktives Mitglied
Guten Morgen
es gibt vermutlich eine schönere Art die Werte am Ende des Arrays einzufügen aber so hätte Ich es jetzt:
Java:
for (int j = 0; j < currentArr.length; j++) {
    arr[length-1-j] = currentArr[currentArr.length-1-j];
 
K

kneitzel

Gast
Ja, das ist natürlich auch eine Art, das zu machen. Das ist vollkommen richtig und ok.

Jetzt müsstest Du nur alles, was du erarbeitet hast, zusammen fügen. Ich meine du hast jetzt alles:
- Finden des längsten Arrays hattest Du schon und haben wir nicht weiter thematisiert.
- Die Schleife über die Zeilen hattest Du schon und die hatten wir nicht besprochen.
- Prüfung ob von rechts oder links (Gerade / Ungerade Check)
- Abhängig von der Prüfung dann eine der beiden Copy Schleifen.
- Neue Zeile in das zweidimensionale Array schreiben hattest Du auch schon.
 
K

kneitzel

Gast
Super. Dann vielleicht noch eine alternative Möglichkeit, wie ich das evtl. gemacht hätte.

Code:
for (int index = 0; index < currentArr.length; index++) {
    arr[offset + index] = currentArr[index];

In der Prüfung selbst wird dann nur der Offset gesetzt. Das hattest Du in Deinem ersten Code eigentlich schon in der Variable result.
Offset ist also entweder 0 oder eben diese Differenz.

Aber Deine Lösung ist auch vollkommen ok und ebenfalls gut lesbar.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Zeilen eines Projekts zählen lassen Allgemeine Java-Themen 14
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
H Swing JTextArea als TableCellRenderer in JTable - wie Zeilen selektieren? Allgemeine Java-Themen 47
R Spalten/Zeilen verschieben in zweidimensionalen Arrays? Allgemeine Java-Themen 3
R Methoden Was passiert in den markierten Zeilen? Allgemeine Java-Themen 8
Joker4632 Klassen Buffered Reader liest die Leerzeichen am Zeilen Ende nicht mehr Allgemeine Java-Themen 2
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
C Zeilen-"Vektor" aus Excel-Tabelle suchen Allgemeine Java-Themen 0
OnDemand CSV parsen mehrere Zeilen Allgemeine Java-Themen 22
KaffeeFan FileWriter nur leere Zeilen beschreiben Allgemeine Java-Themen 3
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
M Zeilen zu einem DefaultTableModel hinzufügen Allgemeine Java-Themen 1
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
I JTextArea soll nur drei Zeilen anzeigen Allgemeine Java-Themen 1
Java-Insel Zeilen im Terminalfenster unsichtbar machen Allgemeine Java-Themen 9
127.0.0.1 Zeilen in .txt Datei löschen Allgemeine Java-Themen 11
P ganze Zeilen in einem File mit .replace() ändern. Allgemeine Java-Themen 10
L jTable drag & drop einzelner Zeilen Allgemeine Java-Themen 4
P Aus einem File Zeilen auslesen. Allgemeine Java-Themen 15
C Zeilen/Spaltenzahl Allgemeine Java-Themen 7
X Textdatei auf gewünschte Anzahl der Zeilen kürzen Allgemeine Java-Themen 2
B Problem mit leeren Zeilen Allgemeine Java-Themen 2
B Textdatei Zeilen auslesen Allgemeine Java-Themen 7
A Email versenden mehrere Zeilen Allgemeine Java-Themen 10
K Textdatei komplett auslesen bis auf 2 Zeilen Allgemeine Java-Themen 2
S Zeilen in einer Datei löschen Allgemeine Java-Themen 3
A Zeilen aus einer Textdatei löschen Allgemeine Java-Themen 6
MQue 16 Fehler pro 1000 Zeilen Allgemeine Java-Themen 11
H JTable Löschen [Alle Zeilen aufeinmal Löschen] Allgemeine Java-Themen 6
D (BufferedReader) inLine() "verschluckt" zeilen ? Allgemeine Java-Themen 2
G 2 zeilen in textdatei beim auslesen verbinden Allgemeine Java-Themen 10
MQue Zeilen nach rechts verschieben Allgemeine Java-Themen 3
B Entfernen von Zeilen/Spalten aus einer Matrix Allgemeine Java-Themen 8
G einzelne zeilen aus textArea auslesen Allgemeine Java-Themen 8
P Kompletten Textseiten in gleich lange zeilen schneiden Allgemeine Java-Themen 7
L In JTable Zeilen n. selben Dateninhalt filtern & ausgebe Allgemeine Java-Themen 16
S FileReader Methode nach Zeilen. Allgemeine Java-Themen 2
R Daten in File schreiben (mit Zeilen beachten) Allgemeine Java-Themen 12
V Zeilen lesen Allgemeine Java-Themen 3
V Anzahl der Zeilen in einem File Allgemeine Java-Themen 3
thE_29 Größe bzw. Zeilen einer Datei Allgemeine Java-Themen 4
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben