Array wird gelöscht

Status
Nicht offen für weitere Antworten.

Onkel.Joe88

Mitglied
Hallo ..
Ich verwalte 3 Türme über ein Array. Wenn ich diese ausgebe geshcieht das in einem halbwegs komplizierten Vorgang mitt verschachtelten for Schleifen und if Abfragen.
Das Problem ist nur, dass nach einer Ausgabe eine zweite Ausgabe nicht möglich ist, weil alle dreit Türm plötzlich leer sind. Ich habe kiene Ahung wieso das so ist. Ich bitte um Hilfe.

Hier miene Methode:

Code:
    public void ausgeben(){
        Turm[] ausgabeturm = {turm[0],turm[1],turm[2]};

        
        String s = "";
        for(int i = 0; i < anzahl; i++){
            s = s + ".";
        }
        s = s + "..";
        s = s + "||" + s;
        System.out.print(s);
        System.out.print(s);
        System.out.println(s);
        System.out.print(s);
        System.out.print(s);
        System.out.println(s);        
        s = "";
        for(int y = anzahl;y > 0; y--){
            s = "";
            String aussen = "";
            
            for(int z = 0; z < 3; z++){
                
                if(turm[z].getGroesse() >= y){
                    
                    int aktuell = turm[z].obersterWert();
                    for(int i = anzahl - aktuell + 2; i > 0; i--){
                        aussen = aussen + ".";
                    }
                    s = s + "I";
                    for(int i = 0; i < aktuell;i++){
                        s = s + "--";
                    }
                    s = s + "I";
                    s = aussen + s + aussen;
                }
                else {
                    aussen = "..";
                    for(int i = 0; i < anzahl; i++){
                        aussen = aussen + ".";
                    }
                    s = aussen + "||" + aussen;
                }
                if(turm[z].getGroesse() > 0) turm[z].entferne();
                System.out.print(s);
            }
            System.out.println("");                
        }
        s = "";
        for(int j = 0; j < anzahl; j++){
            s = s + "##";
        }
        s = s + "######";
        s = s + s + s;
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
        turm[0] = ausgabeturm[0];
        turm[1] = ausgabeturm[1];
        turm[2] = ausgabeturm[2];
    }
 
S

SlaterB

Gast
doch, funktioniert

Code:
public class Test
{
    public static void main(String[] args)
    {
        int anzahl = 3;
        Turm[] turm = new Turm[]
            {new Turm(1), new Turm(2), new Turm(3)};


        Turm[] ausgabeturm =
            {turm[0], turm[1], turm[2]};


        String s = "";
        for (int i = 0; i < anzahl; i++)
        {
            s = s + ".";
        }
        s = s + "..";
        s = s + "||" + s;
        System.out.print(s);
        System.out.print(s);
        System.out.println(s);
        System.out.print(s);
        System.out.print(s);
        System.out.println(s);
        s = "";
        for (int y = anzahl; y > 0; y--)
        {
            s = "";
            String aussen = "";

            for (int z = 0; z < 3; z++)
            {

                if (turm[z].getGroesse() >= y)
                {

                    int aktuell = turm[z].obersterWert();
                    for (int i = anzahl - aktuell + 2; i > 0; i--)
                    {
                        aussen = aussen + ".";
                    }
                    s = s + "I";
                    for (int i = 0; i < aktuell; i++)
                    {
                        s = s + "--";
                    }
                    s = s + "I";
                    s = aussen + s + aussen;
                }
                else
                {
                    aussen = "..";
                    for (int i = 0; i < anzahl; i++)
                    {
                        aussen = aussen + ".";
                    }
                    s = aussen + "||" + aussen;
                }
                if (turm[z].getGroesse() > 0) turm[z].entferne();
                System.out.print(s);
            }
            System.out.println("");
        }
        s = "";
        for (int j = 0; j < anzahl; j++)
        {
            s = s + "##";
        }
        s = s + "######";
        s = s + s + s;
        System.out.println(s);
        System.out.println(s);
        System.out.println(s);
        turm[0] = ausgabeturm[0];
        turm[1] = ausgabeturm[1];
        turm[2] = ausgabeturm[2];

        System.out.println(Arrays.toString(turm));

    }
}


class Turm
{

    private int g;

    public Turm(int g)
    {
        this.g = g;
    }

    public int getGroesse()
    {
        return g;
    }

    public int obersterWert()
    {
        return g;
    }

    public void entferne()
    {
    }

    public String toString()
    {
        return "Turm " + g;
    }
}

oder willst du anfangen, näher zu beschreiben, was nicht geht?
was 'eine zweite Ausgabe nicht möglich ist' sowie 'Türm plötzlich leer' wohl bedeutet?

könnte es nicht was mit turm[z].entferne(); zu tun haben,
willst du gar nix über die Klasse Turm verraten?
 

DocRandom

Top Contributor
..dann nimm mal das
Code:
if(turm[z].getGroesse() > 0) turm[z].entferne();
in Zeile 42 raus!
Habe mich allerdings nicht mit Deinem Code auseinander gesetzt!

lg
DocRandom
 

Onkel.Joe88

Mitglied
entschuldigung wollte es nicht zu unübersichtlich machen hier die Klasse Turm


Code:
/**
 * Beschreiben Sie hier die Klasse Turm.
 * 
 * @author (Ihr Name) 
 * @version (eine Versionsnummer oder ein Datum)
 */
public class Turm {
    int groesse;
    Stack stapel;


    /**
     * Konstruktor für Objekte der Klasse Turm
     */
    public Turm() {
        int groesse = 0;
        stapel = new Stack();
    }
    
    public int getGroesse(){
        return groesse;
    }
    
    public int obersterWert(){
        if(!stapel.isEmpty())
            return ((Scheibe)stapel.top()).getWert();
        else
            return 1000;
    }
    
    public Scheibe entferne(){
        
        Scheibe knoten = (Scheibe) stapel.top();
        stapel.pop();
        groesse--;
        return knoten;
    }
    
    public boolean ablegen(Scheibe pScheibe){
        int wert = pScheibe.getWert();
        
        if(wert < this.obersterWert()){
            stapel.push(pScheibe);
            groesse++;
            return true;
        }
        else {
            return false;
        }
    }
    
    
}

Also das Problem ist, dass wenn ich die Methode ausgabe() starte, wird diese auch normal ausgeführt. Aber wenn ich ein wieteres mal die Methode ausführen will ist dies nicht möglich, weil währenddes durchlaufen irgendwo die Türme gelöscht werden. Das kann eigentlich nicht sein, weil ich die Türme gganz am anfang in eine Art sicherungs variable lege und am Ende Sie wieder daraus kopiere. Das ist das was ich nicht verstehe. Ich könnte auch das ganze Java Projekt hochladen, wenn interesse besteht, dann könntet ihr mal genauer forschen.
 
S

SlaterB

Gast
> weil ich die Türme gganz am anfang in eine Art sicherungs variable lege und am Ende Sie wieder daraus kopiere

warum machst du das eigentlich, was ist der Unterschied dazu, wenn du das weglassen würdest?

du weist dem Array ja doch nirgendwo etwas zu und wenn die die drei Türme selber änderst,
dann wirkt sich das genauso auf beide Arrays aus, beide enthalten dieselben Objekte

es werden keine Türme kopiert und dessen innerer Zustand gewahrt, falls du das vorhattest

> weil währenddes durchlaufen irgendwo die Türme gelöscht werden

immer noch musst du erklären, was du unter 'löschen' verstehst,
die Objekte sind eindeutig am Ende noch da, siehe mein Beispiel

sie haben natürlich alle ihre Scheiben verloren, das mag sein,
dagegen hilft dein Array Null komma gar nix,
da musst du schon new Turm() erstellen und irgendwie den Zustand kopieren
 
M

martin.g

Gast
Du hast wahrscheinlich sowas gesucht:

Z3: Turm[] ausgabeturm = turm.clone();
Z59-61: turm = ausgabeturm;

ohne Wertung des Programms und dessen Logik an sich.
 

Onkel.Joe88

Mitglied
ichbekomme jetz folgende fehler meldung:

Code:
clone() has protected access in java.lang.Object

muss ich irgendwas über import vorher reinholen?
 

JavaFred

Aktives Mitglied
implements Cloneable alleine reicht nicht, da so nur eine flache Kopie aller Exemplarvariablen angelegt wird.
 

Tobias

Top Contributor
implements Cloneable reicht auch nicht, weil das am protected der clone()-Methode nix ändert. Um den Fehler weg zu kriegen muß er schon clone() überschreiben.

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
M Array wird nur als Speicheraddresse ausgegeben Allgemeine Java-Themen 7
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
J Array-List Bubble-Sort Allgemeine Java-Themen 12
4 Variablen Int-Array Int Zuweisen Allgemeine Java-Themen 7
J Array Allgemeine Java-Themen 8
Z Array mit unterschiedlichen Werten Allgemeine Java-Themen 1
L sortiertes Array im main aufrufen klappt nicht. Allgemeine Java-Themen 3
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
A Mit dem letzten bis zum ersten Wert aus Array rechnen Allgemeine Java-Themen 15
A Vector Strings in Array splitten Allgemeine Java-Themen 6
I Muster in Array suchen Allgemeine Java-Themen 10
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
R Wärmeleitung, 3d-Array Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben