Objekt einer Klasse speichert die Veränderung nicht

Hallo liebe Leute,
ich muss eine Klasse schreiben, welche ein Genom mit den Buchstaben A, C, G, und T repräsentiert. Zuerst muss man durch public Genom(int length) per Zufall eine Sequenz bestehend aus diesen Buchstaben kreieren. Danach wird diese Sequenz(gespeichert in char [] aminoAcids) in der Methode "deletion" bearbeitet. Hier wird per Zufall ein Element des Arrays ausgesucht und gelöscht. Das Problem aber ist, dass wir vor der Bearbeitung und nach der Bearbeitung zwei unterschiedliche Genomsequenzen haben müssen. Aus irgend einem Grund, passiert genau das nicht bei mir. Wenn ich zum Beispiel "ACTTGC" als Genom habe, dann müsste als Outcome ein Genom dastehen, welches ein Buchstabe weniger hat, als das erste Genom. Unglücklicherweise darf ich keine weiteren Methoden benutzen (z. bsp eine setter-Methode), weil ich nur die angegebenen Methoden benutzen darf. Weiss jemand, wo genau das Problem liegt und wie ich es lösen kann, sodass mein Objekt die neue Sequenz in sich speichert?

mein Quellcode:

Java:
import java.util.Arrays;
public class Genom {
   
    //Laenge des Genoms
    private int length = 0;
   
    //Sequenz der Aminosäure
    private char[] aminoAcids;

    //Wortschatz
    static final char[] ALPHABET = {'A', 'C', 'G', 'T'};
    /**
     * Konstruktion des Genoms per Zufall durch Klasse Random
     */
     public Genom(int length) {      
       
        this.length = length;
        aminoAcids = new char[length];      
        int zufall = 0;
        for(int i = 0; i < length; i++){
            zufall = Random.generateRandomInt(4);
            aminoAcids[i] = ALPHABET[zufall];                     
        }     
    }
    public char[] getAASequence() {       
        return aminoAcids;
    }
    public int getLength() {       
        return this.length;       
    }
    //gibt Sequenz als String zurück
    public String toString() {       
        
        StringBuffer b = new StringBuffer();
        char [] aminoAcids = getAASequence();
        //int length = getLength();
        for(int i = 0; i < aminoAcids.length; i++){
            b.append(aminoAcids[i]);           
        }
        String s = b.toString();
        return s;
    }
    public void deletion() {
        char [] aminoAcids = getAASequence();
        int length = getLength();
        char [] deletedAcid = new char [aminoAcids.length - 1];
        int random = Random.generateRandomInt(aminoAcids.length - 1);       
        int count = 0;
        for(int i = 0; i < aminoAcids.length; i++){
            if(i == random){
                count = count - 1;
            }else{
                deletedAcid[count] = aminoAcids[i];
            }
            count++;
        }       
        aminoAcids = new char[deletedAcid.length];
        for(int i = 0; i < deletedAcid.length; i++){
            aminoAcids[i] = deletedAcid[i];
        }
    }
    public static void main(String[] args) {       
        Genom g1 = new Genom(5);       
        g1.deletion();
    }
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

als erstes bitte Code immer in [CODE] .. [/CODE] Tags setzen. Sonst ist der Code nicht wirklich lesbar.

Was mit am Code auffällt:
Du hast eine Instanzvariable aminoAcids.
In der Methode deletion deklarierst Du aber auch noch eine lokale Variable aminoAcids. Damit bezieht sich die Zuweisung am Ende der Methode auf die lokale Variable und nicht auf die Instanzvariable.
Du kannst die Instanzvariable z.B. per this.aminoAcids ansprechen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben