fehler beim incrementellen schreiben in einen vector

Status
Nicht offen für weitere Antworten.

roberlin

Mitglied
hallo leute! bin ersti und meine aufgabe ist es, ein programm zu entwerfen, das wachstum simuliert:

aus "O" wird "X" und aus "X" wird "OX", also sowas sollte dabei herauskommen:

O
X
OX
XOX
OXXOX
XOXOXXOX...

habe es auf der mit folgendem code versucht:

Code:
[code]import java.util.*;

public class grow {
    
//    at first, we declare constants for X and O:
    
    static final char o = 'O';
    static final char x = 'X';

    public static void main(String[] args) {
        
/*        to figure out a working loop (or loops) for the growing the input into the vector will be "O" in the beginning
we declare one vector "vec" for the current line and one vector "newVec" for the new line of growth. for now, we simply set the number of iterations to 5*/
        
        Vector<Character> vec = new Vector();
        Vector<Character> newVec = new Vector();
        
        int ind = 0; //index of vec
        int ind1 = 0; //index of newVec
        int it = 5; //number of iterations
        
        vec.insertElementAt(o, ind);
        
        for (int i=0; i<it; i++){         // loop iterations
            
            for (int i1 = 0; i1<vec.size(); i1++){  /*loop through vec*/
                
                }                
                if (vec.get(i1)==o){        
                    newVec.insertElementAt(x, ind1);
                    ind1++;
                }
                if (vec.get(i1)==x){
                    newVec.insertElementAt(o, ind1);
                    ind1 = ind1 + 1;
                    newVec.insertElementAt(x, ind1);
                    ind1 = ind1 + 1;
                }
            }
            for(int i2 = 0; i2 < newVec.size(); i2++) {
                   System.out.println(newVec.get(i2));
                   vec = newVec;
                   ind1 = 0;
                }
        }
    }
}

[code/]

ich bekomme aber immer eine speicherbezogene fehlermeldung in eclipse und weiss grad echt nich mehr weiter, hängt es viell mit der anfangsgröße oder mit der vergrößerung (incrementCapacity) zusammen? habe auch schon probiert die vektoren mit Vector<Character> vec = new Vector(1, 1); und ähnlichem zu deklarieren, bringt aber auch nix, please help, thx!!
 
S

SlaterB

Gast
deine Klasse war gar nicht kompilierbar, da die beiden ifs außerhalb der inneren Schleife standen,

so
Code:
public class grow
{

    // at first, we declare constants for X and O:

    static final char o = 'O';
    static final char x = 'X';

    public static void main(String[] args)
    {
        Vector<Character> vec = new Vector();
        Vector<Character> newVec = new Vector();

        int ind = 0; // index of vec
        int ind1 = 0; // index of newVec
        int it = 5; // number of iterations

        vec.insertElementAt(o, ind);

        for (int i = 0; i < it; i++)
        { // loop iterations

            for (int i1 = 0; i1 < vec.size(); i1++)
            {
                if (vec.get(i1) == o)
                {
                    newVec.insertElementAt(x, ind1);
                    ind1++;
                }
                if (vec.get(i1) == x)
                {
                    newVec.insertElementAt(o, ind1);
                    ind1 = ind1 + 1;
                    newVec.insertElementAt(x, ind1);
                    ind1 = ind1 + 1;
                }
            }
        }
        for (int i2 = 0; i2 < newVec.size(); i2++)
        {
            System.out.println(newVec.get(i2));
            vec = newVec;
            ind1 = 0;
        }
    }
}
gibts keine Fehlermeldung, die Ausgabe ist
X
X
X
X
X

was ist nun die Frage?
und was ist 'eine speicherbezogene fehlermeldung'?
hat die keinen Namen/ Text?
 

roberlin

Mitglied
ups, hatte da noch einen andren block am anfang der for-schleife, da hab ich die schliessende klammer zu löschen vergessen...

die ausgabe von

x
x
x...

hatte ich auch schon, aber wie das wachstum/die ausgabe aussehen sollte habe ich ja eingangs beschrieben, das krieg ich irgendwie nicht hin, ist mein ansatz vollkommen daneben, müsste doch eigentlich mit den schleifen so klappen. aus der aus gabe

x
x
x
x...

schliesse ich, dass die innere for-schleife nach einem durchgan endet, weil der vector sich nicht vergrößert und ich weiss nicht genau, wie ich es hinkriege, dass er wächst, sodass obige ausgabe erreicht wird...

die fehlermeldung reiche ich nach, bin grade auf arbeit und kann hier (keine adminrechte) kein eclipse installieren...

sorry für meine anfängerüberlegungen...

vielen dank!!

grüße. r
 
S

SlaterB

Gast
eine der wichtigsten Aufgaben wäre, die Listen nach jedem Durchgang zu tauschen,
du arbeitest 5x nur mit der O-Liste

sieht dann z.B. so aus:
Code:
public class grow
{

    // at first, we declare constants for X and O:

    static final char o = 'O';
    static final char x = 'X';

    public static void main(String[] args)
    {
        Vector<Character> vec = new Vector();
        Vector<Character> newVec = new Vector();

        int ind = 0; // index of vec
        int ind1 = 0; // index of newVec
        int it = 10; // number of iterations

        newVec.insertElementAt(o, ind);

        for (int i = 0; i < it; i++)
        { // loop iterations

            ind1 = 0;
            vec = newVec;
            newVec = new Vector<Character>();
            System.out.print("\ni: "+i+" ");
            for (int i1 = 0; i1 < vec.size(); i1++)
            {
                char c = vec.get(i1).charValue();
                System.out.print(c);
                if (c == o)
                {
                    newVec.insertElementAt(x, ind1);
                    ind1++;
                }
                if (c == x)
                {
                    newVec.insertElementAt(o, ind1);
                    ind1 = ind1 + 1;
                    newVec.insertElementAt(x, ind1);
                    ind1 = ind1 + 1;
                }
            }            
        }
    }
}

--------

edit: kürzer:

Code:
public class grow
{
    static final char o = 'O';
    static final char x = 'X';

    public static void main(String[] args)
    {
        Vector<Character> vec;
        Vector<Character> newVec = new Vector();
        newVec.add(o);

        int it = 10;
        for (int i = 0; i < it; i++)
        {
            vec = newVec;
            newVec = new Vector<Character>();
            System.out.print("\ni: " + i + " ");
            for (int i1 = 0; i1 < vec.size(); i1++)
            {
                char c = vec.get(i1).charValue();
                System.out.print(c);
                if (c == x)
                {
                    newVec.add(o);
                }
                newVec.add(x);
            }
        }
    }
}
 

roberlin

Mitglied
danke! werd das nachher gleich mal testen! die abkürzung gefällt mir gut, da hätte ich auch drauf kommen können.

wirklich verstanden hab ich es noch nich ganz: was genau vertauscht sich bei deiner variante? liegt es daran, dass du newVec erst innerhalb der schleife deklarierst?

warum bleibe ich bei o? nach meinem ersten durchgang müsste doch in newVec auch x stehen (und damit in vec für die zweite iteration der äußeren schleife) oder?
 
S

SlaterB

Gast
du liest 5x aus vec und schreibst in newVec,
in vec steht aber jedesmal nur der Anfangswert 'o' drin, vec ändert sich nicht
(wie kommst du zu der Aussage "müsste doch in newVec auch x stehen (und damit in vec für die zweite iteration"?)

erst duch einen Befehl wie
vec = newVec;
kommt derartige Dynamik ins Spiel
 

roberlin

Mitglied
genau hab ich doch aus diesem grund nach beenden der inneren for-schleife, wenn vec ausgelesen und verändert in newVec geschrieben ist, den inhalt von newVec geschrieben und dann an vec übergeben, bevor die äußere iterationsschleife erneut startet.

obwohl ich grad sehe dass mein
vec = newVec;
in der for-schleife steht, die ja nur zum auslesen und schreiben von newVec dient, also wäre mir geholfen wenn in meinem code statt

Code:
 for(int i2 = 0; i2 < newVec.size(); i2++) {
System.out.println(newVec.get(i2));
vec = newVec;
ind1 = 0;
}

eher

Code:
 for(int i2 = 0; i2 < newVec.size(); i2++) {
System.out.println(newVec.get(i2));
vec = newVec;
ind1 = 0;
} 
vec = newVec;

nach der inneren for-schleife stünde (konzeptuell war es so gedacht...)? oder gehts dann auch noch nicht?
 

roberlin

Mitglied
shit, sorry, in der schleife muss das vec = newVec; dann ja weg, also so:




Code:
for(int i2 = 0; i2 < newVec.size(); i2++) {
System.out.println(newVec.get(i2));
ind1 = 0;
}
vec = newVec;
 

roberlin

Mitglied
das würde nämlich bedeuten, dass mein code in meinem ersten posting, bis auf die eine fehlerhafte } klammer nach der öffnung der inneren for-schleife und dem vec = newVec;, welches mir in die letzte for-schleife gerutscht ist statt dahinter, vom prinzip her richtig war, was meinem pessimismus bezgl meinem verständnis für java ein wenig abhilfe verschaffen würde... ;)

in jedem fall bin ich dir sehr dankbar, mir sind ein paar weitere lichter aufgegangen
 
S

SlaterB

Gast
> und dann an vec übergeben, bevor die äußere iterationsschleife erneut startet.

nein dieser Befehl stand bei dir erst ganz am Ende nach den 5 Durchläufen

-----------

> oder gehts dann auch noch nicht?


so hab ichs ja auch mehr oder weniger, also: ja klar ist das mit dem Befehlt dann besser als vorher,
aber vec und newVec dürfen natürlich nicht die gleiche Liste sein,
sonst wird ein Durchlauf ewig dauern ;)

newVec muss also noch ein neuer Vector werden, alles wie in meinem Code zu sehen
 

roberlin

Mitglied
sorry, ein letzter versuch, es zu raffen. im folgendem code

Code:
        import java.util.*;

        public class grow {



        static final char o = 'O';
        static final char x = 'X';

        public static void main(String[] args) {

            Vector<Character> vec = new Vector();
            Vector<Character> newVec = new Vector();

            int ind = 0; //index of vec
            int ind1 = 0; //index of newVec
            int it = 5; //number of iterations

            vec.insertElementAt(o, ind);

            for (int i=0; i<it; i++){

                  for (int i1 = 0; i1<vec.size(); i1++){ 

                        if (vec.get(i1)==o){
                        newVec.insertElementAt(x, ind1);
                        ind1++;
                        }
                        if (vec.get(i1)==x){
                        newVec.insertElementAt(o, ind1);
                        ind1 = ind1 + 1;
                        newVec.insertElementAt(x, ind1);
                        ind1 = ind1 + 1;
                        }
                  }
                  for(int i2 = 0; i2 < newVec.size(); i2++) {
                  System.out.println(newVec.get(i2));
                  ind1 = 0;
                  vec = newVec;
            }
       }
}
}


habe ich (verglichen mit dem ersten posting) jetzt mal nur die falsche klammer und die kommentare entfernt, das vec = newVec; aus der letzten schleife genommen und die zeilen so eingerückt, wie ich es gedacht habe. ich habe entdeckt, dass ganz unten eine weitere überflüssige } klammer steht. diese weggedacht, wäre es dann richtig? das vec = newVec steht ja ausserhalb der inneren for-schlleife oder muss es oben vor beginn der inneren for-schleife stehen, wie in deinem code? macht ja eignetlich keinen unterschied...
 
S

SlaterB

Gast
die Zeilen 37 bis 42 müssten alle einen weiter eingerückt werden,

Zeile 38 + 39 stehen in der for-i2-Schleife, das ist unnötig,
es reich, wenn die einmal am Ende der for-i-Schleife ausgeführt werden

immernoch fehlt wie gesagt: newVec muss ein neuer Vector sein,
wenn du nur vec = newVec; ausführst dann zeigen beide Variable auf denselben Vector,
das ist ungünstig, gelinde gesagt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
S Fehler beim Programm Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
L Fehler beim laden eines Icons Java Basics - Anfänger-Themen 3
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
E Fehler beim Debuggen einer jsp-Datei Java Basics - Anfänger-Themen 3
J Fehler beim Runden Java Basics - Anfänger-Themen 3
V Klassen Fehler beim compilieren einer Datei in CamelCase Java Basics - Anfänger-Themen 2
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
B Input/Output Fehler beim Übertragen eines ObjectOutputStreams. Java Basics - Anfänger-Themen 0
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
W Fehler beim verlängern des Arrays Java Basics - Anfänger-Themen 5
S Fehler beim Ausführen Java Basics - Anfänger-Themen 5
S Seriealiserung Fehler beim Landen Java Basics - Anfänger-Themen 1
Matze 12 häufige Fehler beim Programmieren lernen Java Basics - Anfänger-Themen 2
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
N Fehler beim importieren vom package Java Basics - Anfänger-Themen 2
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
A Erste Schritte Nicht zu findender Fehler beim Auslesen eines Buchstabens Java Basics - Anfänger-Themen 4
X Fehler beim Öffnen von Jar Datei: "kein Hauptmanifestattribut" Java Basics - Anfänger-Themen 5
B Erste Schritte Fehler beim starten Java Basics - Anfänger-Themen 12
A Resize-Fehler (nur) beim waagrecht Verkleinern Java Basics - Anfänger-Themen 5
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
1 Erste Schritte ständige Fehler beim Ausführen von Hello World Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
F Genereller Fehler beim Starten des Javaprogramms Java Basics - Anfänger-Themen 3
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
F HttpURLConnection Fehler beim Quelltext holen Java Basics - Anfänger-Themen 6
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
D Fehler beim Compilen Java Basics - Anfänger-Themen 8
A Fehler beim Umschreiben in Array Java Basics - Anfänger-Themen 6
K Fehler beim Einfügen eines Programm Icons Java Basics - Anfänger-Themen 6
J Compiler-Fehler .jar Datei erstellt aber beim Ausführen Fehler Java Basics - Anfänger-Themen 5
M Fehler beim Übergeben von Daten an JTable Java Basics - Anfänger-Themen 14
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
StrikeTom Fehler beim Audiodatei abspielen Java Basics - Anfänger-Themen 4
M Fehler beim Ausführen von runable Jar Java Basics - Anfänger-Themen 9
StrikeTom Fehler beim bildanzeigen Java Basics - Anfänger-Themen 10
A jexcelapi fehler beim einrichten Java Basics - Anfänger-Themen 2
M Fehler beim Compilieren Java Basics - Anfänger-Themen 2
S Fehler beim berechnen von MD5 Java Basics - Anfänger-Themen 7
M Fehler beim Compilieren Java Basics - Anfänger-Themen 4
J Fehler beim Ausführen von Programm Java Basics - Anfänger-Themen 3
D Class not found fehler beim ausführen unter konsole : / Java Basics - Anfänger-Themen 2
S Fehler beim Speichern von MP3-Stream Java Basics - Anfänger-Themen 6
R Derby-Datenbank: Fehler beim Zugriff im Embedded Modus Java Basics - Anfänger-Themen 27
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
L Fehler beim Aufruf eines Applet Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
C Fehler beim ausgführen von Java App als nicht Admin u. Vista Java Basics - Anfänger-Themen 6
G Fehler beim Ausführen HILFE! Java Basics - Anfänger-Themen 12
H JavaMail: Beim Versenden tritt ein Fehler auf! Java Basics - Anfänger-Themen 4
G Fehler beim ausführen einer JSP Java Basics - Anfänger-Themen 5
K Fehler beim complieren Java Basics - Anfänger-Themen 5
0 Folgender Fehler beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 8
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
T Fehler beim Compilieren Java Basics - Anfänger-Themen 5
G Fehler beim Aufruf eine Javamethode über JSP Java Basics - Anfänger-Themen 8
G Fehler beim erneuten Öffnen von JInternalFrame Java Basics - Anfänger-Themen 7
R Fehler beim Programm Java Basics - Anfänger-Themen 20
G Fehler beim ausführen. Java Basics - Anfänger-Themen 3
W Fehler beim ausführen der Javadateien Java Basics - Anfänger-Themen 3
C Fehler beim build. nur wo? Java Basics - Anfänger-Themen 2
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
J Fehler beim Starten der .class Java Basics - Anfänger-Themen 21
V Fehler beim Kompilieren der Unterklasse Java Basics - Anfänger-Themen 2
G Fehler beim kompilieren Java Basics - Anfänger-Themen 18
E Fehler NullPointer beim Ausführen Java Basics - Anfänger-Themen 4
W Fehler beim Compilen Java Basics - Anfänger-Themen 9
D [JCreator] Einrichten - Fehler beim Kompilieren Java Basics - Anfänger-Themen 14
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
M Problem beim Aufruf einer Methode: Wo is der Fehler? Java Basics - Anfänger-Themen 12
D Fehler beim kompilieren einer Java-Datei (javac) Java Basics - Anfänger-Themen 6
F Fehler beim Schreiben wenn Datei schreibgeschützt abfangen Java Basics - Anfänger-Themen 6
I Fehler beim Compilen Java Basics - Anfänger-Themen 10
T Fehler beim Laden eines Applets Java Basics - Anfänger-Themen 16
O Programm-Fehler beim einlesen von RGB werten Java Basics - Anfänger-Themen 5
F Fraktal fehler beim kompalieren Java Basics - Anfänger-Themen 5
M Fehler beim ein- und auslesen einer Textdatei Java Basics - Anfänger-Themen 5
L Fehler beim ausführen! Java Basics - Anfänger-Themen 14
C Fehler beim Starten einer *.jar Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben