Array-Werte werden gemischt, ohne Logik

C

cookiedough

Mitglied
Nabend zusammen,

beim Mischen von Werten eines Arrays kann ich nicht nachvollziehen wieso die Werte im neuen Array falsch positioniert werden.


Java:
public class Mischer {

    public static void main(String[] args) {

        // ursprüngliche Wörter-Reigenfolge
        System.out.println("\nursprüngliche Wörter-Reigenfolge:");
        String wort[] = {"Eins", "Zwei", "Drei", "Vier", "Fünf"};
        int wortID[] = new int[5];
        for(int i = 0;i<wortID.length;i++){
            wortID[i] = i;
            System.out.println(wort[i]);
        }

        // mischen
        System.out.println("\nmischen:");
        for(int i = 0;i<wortID.length;i++) {
            double mischid = (int) (i + (Math.random() * (wortID.length - i)));
            int mischid1 = (int)mischid;
            System.out.println("Zufalszahl ist: " + mischid1);
            String puffer = wort[mischid1];
            wort[mischid1] = wort[i];
            wort[i] = puffer;
        }

        // Ausgabe in gemischter Reighenfolge
        System.out.println("\nAusgabe in gemischter Reighenfolge:");
        for(String kkk : wort) {
            System.out.println(kkk);
        }
    }
}

Ausgabe auf dem Bildschirm:


Ich habe versucht das nachzuvollziehen, aber sobald ein Feld im neuen Array bereits belegt ist wird der zu tauschende Wert willkürlich irgendwo in das neue Array gesetzt.

Hier eine nachvollziehbare Beschreibung was passiert.

Erster Schleifendurchlauf:
In der Variablen puffer wird der Inhalt aus Feld 0 des Arrays gespeichert.
Dann wird der Inhalt aus Feld 0 mit dem Inhalt von Feld 0 (= Zufallszahl) überschrieben.
Zuletzt wird der in puffer gespeicherte Wert in das Feld 0 (= Zufallszahl) geschrieben.
Fazit: Die Inhalte der Felder 0 und 0 werden getauscht.
"Eins" (urspr im Feld-Nr 0) steht im neuen Array im 0.Feld
also: neues Array = {Eins, ?, ?, ?, ?}

Zweiter Schleifendurchlauf:
Fazit: Die Inhalte der Felder 1 und 3 werden getauscht.
"Zwei" (urspr im Feld-Nr 1) steht im neuen Array im 3.Feld.
also: neues Array = {Eins, ?, Zwei, ?, ?}

Dritter Schleifendurchlauf:
Fazit: Die Inhalte der Felder 2 und 3 werden getauscht.
"Drei" (urspr im Feld-Nr 2) steht im neuen Array im 3.Feld.
also: neues Array = {Eins, ?, Zwei, ?, Drei}

Oh nein, das dritte Feld im neuen Array ist belegt! Aber wieso ist die Drei an letzter Stelle ???
Laut Ausgabe auf dem Bildschirm ist der Wert "Drei" (der ursprünglich im aus dem Feld-Nr. 2 kommt) an letzter Stelle des neuen Arrays.
Wie kann das sein?
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Ich glaube du hast da zwei Denkfehler: Indizes beginnen bei 0, in deiner Rechnung ist es z.T. bei Eins beginnend, und es gibt kein neues Array, sondern das bestehende wird verändert.

Ich nutz der Kürze mal [A,B,C,D,E], in der ersten Zeile stehen jeweils die Indizes, in der zweiten die Werte.

Zu Beginn:
Code:
[0,1,2,3,4]
[A,B,C,D,E]


0 wird mit 0 getauscht:
Code:
[0,1,2,3,4]
[A,B,C,D,E]

1 wird mit 3 getauscht:
Code:
[0,1,2,3,4]
[A,D,C,B,E]

2 wird mit 3 getauscht:
Code:
[0,1,2,3,4]
[A,D,B,C,E]

3 wird mit 4 getauscht:
Code:
[0,1,2,3,4]
[A,D,B,E,C]

4 wird mit 4 getauscht:
Code:
[0,1,2,3,4]
[A,D,B,E,C]
also
Code:
[Eins, Vier, Zwei, Fünf, Drei]
 
kneitzel

kneitzel

Top Contributor
Also dein Text beschreibt ganz offensichtlich nicht den Code:
a) Du schreibst etwas von einem neuen Array - Du hast nur ein Array wort und kein neues Array. (Ok, du hast noch wortId, aber das Array nutzt Du ja nicht wirklich ...)
b) Das Array hat Werte in allen Feldern - Schreib die richtig auf! Also nix mit "?" oder so ...

Also Du hast ein Array aus
1, 2, 3, 4, 5 (in Worten - nicht als Zahlen)

Dann tauscht du 0 mit 0 Also hast Du 1, 2, 3, 4, 5
Dann tauscht Du 1 mit 3 (das ist dann die 2 mit der 4 - wir fangen ja mit Index 0 an!): 1, 4, 3, 2, 5
Dann tauscht Du 2 mit 3 -> 1, 4, 2, 3, 5
Dann tauscht Du 3 mit 4 -> ...
Dann tauscht Du 4 mit 4 -> ...

Also bitte immer ganz exakt schauen und schreiben, was im Code passiert ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L [ARRAY] Werden hier die Indezes oder die Werte vergliechen? Java Basics - Anfänger-Themen 4
2 Alle Werte die mit n Würfeln mit m Seiten geworfen werden können in ein n Dimensionales Array Java Basics - Anfänger-Themen 15
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
Kirby_Sike Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
L Werte zufällig aus Array zurückgeben Java Basics - Anfänger-Themen 15
L Gleiche Werte aus Array aussortieren Java Basics - Anfänger-Themen 5
L Gleiche Werte im Array hochzählen Java Basics - Anfänger-Themen 4
N Array-Werte zusammenfassen Java Basics - Anfänger-Themen 20
J Array Werte benutzen Java Basics - Anfänger-Themen 16
D Erste Schritte Array Werte an Methode übergeben Java Basics - Anfänger-Themen 6
S Array Werte vertauschen Java Basics - Anfänger-Themen 2
D Array Werte einlesen und ausgeben? Java Basics - Anfänger-Themen 8
F Werte in 2D-Array mit anderem 2D-Array überschreiben Java Basics - Anfänger-Themen 2
R Werte aus Array addieren und Mittelwert bilden Java Basics - Anfänger-Themen 2
S Werte in Array einlesen Java Basics - Anfänger-Themen 2
B Array Werte zuweisen Java Basics - Anfänger-Themen 4
U Array werte speichern und für berechnungen nutzen Java Basics - Anfänger-Themen 4
K Datentypen Werte im Array vertauschen Java Basics - Anfänger-Themen 5
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
stylegangsta Anzahl der gefunden array Werte ausgeben Java Basics - Anfänger-Themen 6
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
C Werte im Array sortieren Java Basics - Anfänger-Themen 5
A Array in Subklasse - Werte aus Superklasse Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
T Array soll Werte aufnehmen Java Basics - Anfänger-Themen 2
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
J Werte der For-Schleife in Array abspeichern Java Basics - Anfänger-Themen 1
C Rekursion auf einem Array(negative werte addieren) Java Basics - Anfänger-Themen 4
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
E Array Anzahl verschiedener Werte ausgeben Java Basics - Anfänger-Themen 3
M Kann einen Array nicht füllen, im Nachhinein nur "null"-Werte Java Basics - Anfänger-Themen 11
C Array - Werte speichern und ausgeben Java Basics - Anfänger-Themen 5
D Neue Array übernimmt Werte des alten nicht Java Basics - Anfänger-Themen 5
C Erste Schritte Array Werte Ausgeben Probleme mit variable Java Basics - Anfänger-Themen 21
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M In Testklasse einem Array Werte übergeben Java Basics - Anfänger-Themen 6
B Werte über Scanner in ein 3 dim String Array schreiben Java Basics - Anfänger-Themen 7
F Einzelne Werte aus einem Array vergleichen? Java Basics - Anfänger-Themen 8
D Array auslesen und und Werte in ein anderes array anlegen Java Basics - Anfänger-Themen 5
J Integer Werte in Array einlesen Java Basics - Anfänger-Themen 6
C Erste Schritte Integer Werte in Array kopieren Java Basics - Anfänger-Themen 21
T Methoden in einer array werte vergleichen Java Basics - Anfänger-Themen 6
S Werte aus Array auslesen über Variableninhalt Java Basics - Anfänger-Themen 2
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
T Beliebig viele Werte in Array zwischenspeichern Java Basics - Anfänger-Themen 15
K Erste Schritte Array mit 3 werte in eine Zeile -- Hilfe! Java Basics - Anfänger-Themen 2
T Aus object Array Double Werte ziehen Java Basics - Anfänger-Themen 10
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
Spin Array werte zusammenrechnen Java Basics - Anfänger-Themen 18
R array werte ausgeben/zugreifen Java Basics - Anfänger-Themen 8
D werte in array speichern Java Basics - Anfänger-Themen 26
B Datentypen Werte in einen Array einlesen und danach die beiden höchsten Werte wieder ausgeben Java Basics - Anfänger-Themen 3
B Werte aus einem Array umwandeln Java Basics - Anfänger-Themen 10
J Array Werte subtrahieren Java Basics - Anfänger-Themen 8
J int[] array Werte einem int übergeben Java Basics - Anfänger-Themen 9
M Byte Array: Werte größer 127? Java Basics - Anfänger-Themen 11
J Rekursion über int und array gibt zu wenige Werte zurück Java Basics - Anfänger-Themen 5
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
P Werte im Array abwechselnd ausgeben Java Basics - Anfänger-Themen 4
S Char Array Werte in short variablen speichern Java Basics - Anfänger-Themen 4
G Array-Werte Zaehlung Java Basics - Anfänger-Themen 14
G Zählen gleiche Werte in Array Java Basics - Anfänger-Themen 5
X Errechte Werte automatisch in einem Array speichern Java Basics - Anfänger-Themen 11
7 Array speichert Werte nicht? NullPointerException Java Basics - Anfänger-Themen 2
M an String-Array weitere Werte anhängen Java Basics - Anfänger-Themen 22
G array werte in array2 schreiben Java Basics - Anfänger-Themen 6
G Werte im Array zählen Java Basics - Anfänger-Themen 13
G static array liefert falsche Werte zurück Java Basics - Anfänger-Themen 2
K Neue Werte für gleiche Array-Indexe Java Basics - Anfänger-Themen 16
D Werte in Array speicher Java Basics - Anfänger-Themen 8
J Verhindern das Werte in einem Array verloren gehen Java Basics - Anfänger-Themen 13
G Array werte auslesen Java Basics - Anfänger-Themen 6
F Array - Vorkommen der einzelnen Werte ausgeben Java Basics - Anfänger-Themen 8
G Dem array automatisch werte von -10 bis +10 zuweisen Java Basics - Anfänger-Themen 6
S Grösste Werte im Array! Java Basics - Anfänger-Themen 4
F Einem Array Werte zuweisen. (illegal start of expression) Java Basics - Anfänger-Themen 4
S Array Werte inkrem. Java Basics - Anfänger-Themen 2
P Aus Array Werte rauslesen und in Kuchendiagramm abbilden Java Basics - Anfänger-Themen 7
N Mehrere Werte gleichzeitig in ein Array schreiben? Java Basics - Anfänger-Themen 7
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 7
L Array mit Wörtern gestalten Java Basics - Anfänger-Themen 2
Gaudimagspam Nummern generieren Array Java Basics - Anfänger-Themen 4
Eule25 Methode mit Array Java Basics - Anfänger-Themen 4
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben