Elemente in einem Array nach 'oben' verschieben

wbdo

Mitglied
Hallo,

da ich im Wintersemester mit dem Studium anfange, beschäftige ich mich schon mal mit Java. Ich habe dazu einige Aufgaben erhalten. Da ich allerdings noch nicht ganz fit bin, habe ich ein kleines Problem beim verschieben von Elementen in Feldern.

Ich möchte alle Elemente in einem array eine Position so zu sagen noch oben verschieben. Also dass das Element an Position a nach dem Verschieben an a[i+1] ist. Das letzte Element würde dann an den Anfang des array rutschen.

Ich hab das Problem mit einem Hilfsarray bereits gelöst, möchte es jetzt aber ohne dieses tun.

Jetzt die Frage, kann ich das Problem so lösen, dass ich das Element an Stelle i einer Variable x zuweise und das x dann an Stelle i+1 eingefügt wird?

Java:
for(int i = 0; i < a.length; i++){
		int x = a[i];
		a[i+1] = x;
	}
 
S

SlaterB

Gast
was sollte das bringen? du könntest doch gleich
a[i+1] = a;
ausführen, x hat dabei keine Funktion,

sinnvoll wäre aber, das nächste Element in einer Variablen bis zum nächsten Schleifendurchlauf zu speichern, um es zu retten,
bevor dieser Speicherplatz mit dem aktuellen/ vorherigen/ was auch immer Element überschrieben wird,
welches aber nicht in diesem Moment aus dem Array gelesen werden kann,
denn dessen Platz wurde ja schon überschrieben, das Element ist genau das zuvor gemerkte,

kannst du mit diesen Gedanken schon zu irgendwas kommen?
die Liste rückwärts zu durchlaufen wäre natürlich unendlich leichter
 

wbdo

Mitglied
was sollte das bringen? du könntest doch gleich
a[i+1] = a;
ausführen, x hat dabei keine Funktion,

sinnvoll wäre aber, das nächste Element in einer Variablen bis zum nächsten Schleifendurchlauf zu speichern, um es zu retten,
bevor dieser Speicherplatz mit dem aktuellen/ vorherigen/ was auch immer Element überschrieben wird,
welches aber nicht in diesem Moment aus dem Array gelesen werden kann,
denn dessen Platz wurde ja schon überschrieben, das Element ist genau das zuvor gemerkte,

kannst du mit diesen Gedanken schon zu irgendwas kommen?


wenn ich es richtig verstanden habe, soll das Element an a[i+1] gespeichert werden, bevor es mit a überschrieben wird? Also quasi dass das i+1 gerettet wird, damit es dann im nächsten Durchlauf wieder weiter gespeichert werden kann?

Denn das, war so zu sagen meine erste Idee, deshalb das x. Hatte da wohl einen kleinen Denkfehler.

die Liste rückwärts zu durchlaufen wäre natürlich unendlich leichter

ok, also die Elemente von hinten nach vorne einfügen mit einer for schleife die rückwärts läuft? und i muss dann immer kleiner werden (i--)?

Java:
for(int i = a.length-1; i > 0; i--){
		int x = a[i];
		a[i] = a[i-1];
		a[i-1] = x;
	}	i--;
 
S

SlaterB

Gast
> Hatte da wohl einen kleinen Denkfehler.

und jetzt im Text immer noch, ist wirklich nicht ganz leicht, ruhig bisschen ausprobieren, auch auf Papier,
wo wird wann welcher Wert gesetzt, wo wurde der gemerkt?

-------

besser aber abwärts falls erlaubt, dann ist es simpel,
im Moment hast du es falsch, du vertauschst ja Elemente,
es ist dann wirklich nur eine Zeile,
> a = a[i-1];
oder so, kein x,
i--; nach der Schleife sieht auch recht verrückt aus

das letzte Element vor der Schleife merken und am Ende nach vorne setzen
 

Marco13

Top Contributor
Sowas wie
Java:
int last = a[a.length-1];
System.arraycopy(a, 0, a, 1, a.length-1);
a[0] = last;
dürfte auch gehen und könnte schneller sein. Kurz und elegant ist es auf jeden Fall. (FALLS man die Operation an sich elegant findet - je nachdem, wofür das gebraucht wäre, könnte da auch sowas wie LinkedList sinnvoll sein, aber ... das muss man sich überlegen...)
 

bERt0r

Top Contributor
Stell dir vor du hast einen Kasten mit n Schubladen. Wie stellst du's an, wenn du alle Schubladen um eine Stelle nach unten verlegen willst, und die letzte dann eben ganz oben rein? Spiel das mal durch und schreib auf wie du vorgehst.
 

wbdo

Mitglied
habe es mal auf Papier versucht. Aber selbst wenn ich es von hinten versuche, muss ich doch das letzte Element merken. Ansonsten wird es doch vom Vorhänger überschrieben.

Zuerst das Element an Stelle a.length-1 speichern

dann kann ich ja von hinten nach vorne a[i-1] an a zuweisen.

abschließend dann a[0] = Element an a.length-1;

Java:
int x = a[a.length-1];
		for(int i = a.length-1; i > 0; i--)
			a[i] = a[i-1];
			a[0] = x; 
		return a;
 
S

SlaterB

Gast
> Aber
kein aber, habe ich zumindest doch auch schon geschrieben,
paar Zeilen extra drumherum sind ja auch zu verkraften,
das muss so oder so sein als abweichendes Verhalten
 
H

hüteüberhüte

Gast
habe es mal auf Papier versucht. Aber selbst wenn ich es von hinten versuche, muss ich doch das letzte Element merken. Ansonsten wird es doch vom Vorhänger überschrieben.

Ja, letztes Element merken. Ansonsten stehen dann aber immer zwei gleiche Elemente nebeneinander:

Java:
        int[] array = {1, 2, 3, 4, 5};
        int j = array[array.length - 1];

        for (int i = array.length - 1; i > 0; i--) {
            array[i] = array[i - 1];
            // zwei gleiche Elemente nebeneinander
        }

        array[0] = j;

Wenn du das Array von vorne durchläufst, wird ja ein noch zu verschiebendes Element überschrieben. Dieses müsstest du dir dann merken.

Einfach etwas mit Schleifen experimentieren...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
G Elemente in einem String-Array in einen String umwandeln Java Basics - Anfänger-Themen 2
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3
T Elemente aus einem ArrayList entfernen Java Basics - Anfänger-Themen 12
A Wie greif ich auf Elemente eines Arrays in einem Vektor zu? Java Basics - Anfänger-Themen 6
G elemente in einem vektor nach ihren eigenschaften sortieren Java Basics - Anfänger-Themen 2
C Anzahl der Elemente auf einem Stack Java Basics - Anfänger-Themen 4
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
W Elemente aus einer anderen GUI steuern! Java Basics - Anfänger-Themen 13
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
R Elemente eine Liste im Ring schliessen Java Basics - Anfänger-Themen 9
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
R Variablen [GELÖST]Elemente in Array um Schrittweite s verschieben Java Basics - Anfänger-Themen 2
1 Wie addiert man die Elemente einer Verketteten Liste? Java Basics - Anfänger-Themen 5
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
A Eindeutige Elemente aus Array extrahieren Java Basics - Anfänger-Themen 9
gamebreiti Gui menu ArrayList Elemente wiedererkennen Java Basics - Anfänger-Themen 3
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
V wie kann ich in zweidimensionaller Arraylist auf die einzelnen Elemente zugreifen ? Java Basics - Anfänger-Themen 7
W wie legt man die elemente der liste k Mal fest ? Java Basics - Anfänger-Themen 7
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
C ArrayList - überschreibt Elemente Java Basics - Anfänger-Themen 7
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
L Rückwärtsausgabe der Array-Elemente Java Basics - Anfänger-Themen 5
1 Elemente von 2 Arrays vergleichen Java Basics - Anfänger-Themen 12
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
J Eingabe Elemente Aktivieren Java Basics - Anfänger-Themen 2
R Best Practice Elemente aus ArrayList entfernen (performant) Java Basics - Anfänger-Themen 6
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21
T Elemente im Array umdrehen Java Basics - Anfänger-Themen 9
L Elemente zufällig in ein Array verteilen Java Basics - Anfänger-Themen 12
T Wieviel Array-Elemente Java Basics - Anfänger-Themen 19
M Elemente im DefaultListModel separat auslesen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P BitSet- Objekt- Anzahl der Elemente bestimmen Java Basics - Anfänger-Themen 2
S JPA / Elemente einer Liste ansprechen Java Basics - Anfänger-Themen 5
Mrtwomoon Collections Hashset elemente ohne Eckigeklammer ausgeben Java Basics - Anfänger-Themen 9
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10
H Redundante Elemente aus ArrayList entfernen Java Basics - Anfänger-Themen 3
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben