char array wird überschrieben

Diskutiere char array wird überschrieben im Java Basics - Anfänger-Themen Bereich.
A

AnnaSchefer

Hallo zusammen!
Meine Aufgabe ist ein Array mit Kleinbuchstaben zu füllen und denn dann 4567 mal an verschiedenen Elementen random zu verändern.
So wie es ausschaut wird mein char[] abc mitüberschrieben, wie kann ich das vermeiden? Wie behalte ich den abc in der abcde... form bis zum Schluss? Vielen Dank!

Java:
        char[] abc = new char[26];
        char[] vertauscht = new char[26];
        int index;
        int random = 4567;
        int next = 0;
        char buchstabe = 0;

       
        int i=0;
        for(char c='a'; i<=abc.length-1; c++, i++)
        {
            abc[i]=c;
            
        }
        System.out.println(abc);
        
        vertauscht = abc;
        for (int j = 0; j < random; j++) 
        {
            index = (int)(Math.random() * (25 - 0 + 1) + 0); 
            next = (index+1) % vertauscht.length;
            buchstabe = vertauscht[next];
            vertauscht[next] = vertauscht[index];
            vertauscht[index] = buchstabe;
        }

        System.out.println();
        System.out.println(vertauscht); 
        System.out.println(abc); // soll immer noch abcde.... sein
 
Zuletzt bearbeitet von einem Moderator:
J

JustNobody

Ein Array ist ein Referenz Typ, d.h. in der Variabel ist nur eine Referenz gespeichert.

Du hast somit nur ein Array und beide Variabeln verweisen auf dieses eine Array.

Du musst somit ein zweites Array erzeugen und die Werte alle einmal kopieren statt nur die Referenz zu kopieren.
 
A

AnnaSchefer

Vielen Dank für die Rückmeldung! Ich befürchte meine Kenntnisse von Java ist noch nicht genug um das zu verstehen.
d.h. meine
char[] abc = new char[26]; und
char[] vertauscht = new char[26];

sind eigentlich nur ein und derselbe Array?
 
A

AnnaSchefer

Nein, in dem Moment noch nicht, aber nach dem Aufruf von
Java:
vertauscht = abc;
Vielen Dank! Hat funktioniert!

Ist zwar keine elegante Lösung, aber es macht was ich brauche!

Java:
public static void main(String[] args) {

        char[] abc = new char[26];
        int index;
        int random = 4567;
        int next = 0;
        char buchstabe = 0;
        char[] vertauscht = new char[26];

        
        int i=0;
        for(char c='a'; i<=abc.length-1; c++, i++){// array mit kleinbuchstaben füllen
            abc[i]=c;
            
        }
        System.out.println(abc);
        
        int v=0;
        for(char d='a'; v<=vertauscht.length-1; d++, v++){// array mit kleinbuchstaben füllen
            vertauscht[v]=d;
        }
        for (int j = 0; j < random; j++) 
        {
            index = (int)(Math.random() * (25 - 0 + 1) + 0); 
            next = (index+1) % vertauscht.length;
            buchstabe = vertauscht[next];
            vertauscht[next] = vertauscht[index];
            vertauscht[index] = buchstabe;
        }

        System.out.println();
        System.out.println(vertauscht);
        System.out.println(abc);
 
F

fhoffmann

Es geht auch mit:
Java:
for (int i = 0; i < abc.length; i++) {
    vertauscht[i] = abc[i];
}
 
Thema: 

char array wird überschrieben

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben