Arbeiten mit Vector

Neue Frage »

Auf diesen Beitrag antworten »
Lycaner Arbeiten mit Vector

Hi, ich muss wieder in Java ein Programm schreiben und komme wieder nicht weiter.
Die Aufgabenstellung ist, schreiben sie ein Programm, dass aus einer Datei einen Textabschnitt einliest. Dann alle Satzzeichen entfernt und die Wörter sortiert.
Bis jetzt habe ich folgendes geschrieben:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
public void leseDaten(String dateiname) {
       Vector new_datei=new Vector();
       File Datei = new File(dateiname);
       try {
       BufferedReader br = new BufferedReader(new FileReader(Datei));
       
       String line = null;
      
       while ((line = br.readLine()) != null) {
            if(line.contains("*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***")){
               String woerter[] =line.split(" "); 
               new_datei.add(woerter[]); /***Wie kann ich hier die einzelne Wörter dem Vector zuführen?***/
            }
            if(line.contains("*** END OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***"))
                break;
           
       }
        
       
       } catch (IOException e) {
                System.out.println("Datei " + dateiname + " konnte nicht gelesen werden!");
            } 
   } 
}

Wie kann ich die einzelnen Wörter zu meinem Vector zufügen?
 
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
for (String wort: woerter) {
    new_datei.add(wort);
} 

In anderen Sprachen findet man dieses Konstrukt auch als foreach. Es ist speziell zum Durchlaufen von arrays, alternativ ginge es natürlich auch mit einer normalen for Schleife.
Auf diesen Beitrag antworten »
Airblader

Denkbar wäre auch

code:
1:
Collections.addAll(new_datei, woerter);


Zu der von eulersche Zahl vorgeschlagenen "enhanced for-loop" (die hier übrigens durchaus genauso geeignet und gebräuchlich ist) würde ich noch anmerken, dass sie nicht nur für Arrays möglich ist, sondern auch für Collections (also Listen, Vektoren, …).
Auf diesen Beitrag antworten »
eulerscheZahl

Collections.addAll kannte ich noch nicht, danke für den Tipp.

code:
1:
2:
3:
if(line.contains("*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***")){
    //Wörter an Array anfügen
}

Du willst die Wörter nur dann an den Vector hängen, wenn die Zeile "START OF THIS PROJECT..." beinhaltet? Ist das wirklich so beabsichtigt? verwirrt
 
Auf diesen Beitrag antworten »
Lycaner

Nein, es ist ein langer Text aber ich muss nur den Abschnitt bearbeiteten, der zwischen der Zeile "*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA *** und *** END OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***.
Deswegen dachte ich, ich lese den ganze Text ein und zerlege nur den Teil, den ich brauche in einzelnen Wörter oder geht es so nicht?
Auf diesen Beitrag antworten »
eulerscheZahl

Bisher zerlegst du nur die eine Zeile, die den Start markiert.
Du brauchst eine Variable, in der du dir merkst, ob die Startzeile schon vorkam. Wenn diese Variable auf true ist, dann kannst du zerlegen:
Code nicht getestet:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
String line = null;
boolean zerlegen = false;    //zu Beginn wird nicht zerlegt			
while ((line = br.readLine()) != null) {
	if(zerlegen){ //wenn bereits START OF PROJECT... vorkam
		//hier musst du in line noch Satzzeichen entfernen
		String woerter[] =line.split(" "); 
		Collections.addAll(new_datei, woerter);
	}
    if (line.contains("*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***"))
    	zerlegen = true;
    if (line.contains("*** END OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***"))
        break;
}
Auf diesen Beitrag antworten »
Lycaner

Danke,
ich wollte testen, ob das Programm bis dahin läuft aber bekomme immer die Meldung
Datei pg2499 konnte nicht gelesen werden!
So sieht mein Main aus. Die Textdatei (typ:textdokument)heißt pg2499 liegt auch in dem Ordner, wo der Projekt liegt.
Was kann man noch falsch machen?
code:
1:
2:
3:
4:
5:
6:
 public static void main(String[] args) {
           Klasse text = new Klasse();
           text.leseDaten("pg2499");
      }
Auf diesen Beitrag antworten »
eulerscheZahl

Du musst den absoluten Pfad angeben:
entweder so
code:
1:
leseDaten("C:\\unterordner\\datei.txt");

oder so, um das Verzeichnis zu ermitteln, in dem das Projekt sich befindet:
code:
1:
leseDaten(System.getProperty("user.dir") + "\\datei.txt");
Auf diesen Beitrag antworten »
Lycaner

Oh man ein Problemm weg, dazu kommen zwei neu(
Ich muss diese Vector alphabetisch sortieren und wenn ein Wort doppelt vorkommt, soll der Zähler für den Wort um eins steigen.
Deswegen habe ich eine neue Klasse eingeführt

code:
1:
2:
3:
4:
5:
6:
7:
8:
public class Zeichenkette {
      String zeichenkette;
      int anzahl;
    public Zeichenkette(String zeichenkette){
        this.zeichenkette=zeichenkette;
        anzahl=1;
    }  }

Dann habe ich den Vector angepasst
code:
1:
2:
Vector<Zeichenkette> new_datei = new Vector();

Aber jetzt funktionier das zufügen von String nicht mehr(
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
public class Klasse {

    Vector<Zeichenkette> new_datei = new Vector();

    public void leseDaten(String dateiname) {

        File Datei = new File(dateiname);
        try {
            BufferedReader br = new BufferedReader(new FileReader(Datei));

            String line = null;
            boolean zerlegen = false;

            while ((line = br.readLine()) != null) {
                if (zerlegen) {
                    String woerter[] = line.split(" ");
                    for (int i = 0; i < woerter.length; i++) {
                        String wort = woerter[i];
                        if (wort.charAt(wort.length() - 1) == '.'
                                || wort.charAt(wort.length() - 1) == ','
                                || wort.charAt(wort.length() - 1) == '?'
                                || wort.charAt(wort.length() - 1) == '!'
                                || wort.charAt(wort.length() - 1) == ';'
                                || wort.charAt(wort.length() - 1) == ':') {
                            wort = wort.substring(0, wort.length() - 1);
                        }
                        wort = wort.toLowerCase();
                        new_datei.add(wort);

                    }
                    if (line.contains("*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***")) {
                        zerlegen = true;
                    }
                    if (line.contains("*** END OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***")) {
                        break;
                    }
                }
            }
        } catch (IOException e) {
            System.out.println("Datei " + dateiname + " konnte nicht gelesen werden!");
        }
    }

    public void sortieren(Vector<Zeichenkette> new_datei) {
        for (int i = 0; i < new_datei.size(); i++) {
            Zeichenkette tem = null;
            Zeichenkette tem2 = new_datei.get(i);
            if (tem.equals(tem2)) {
                tem.anzahl++;
            }
           /* if (tem.equals(tem2)) {
                Zeichenkette tem3 = tem;
                tem = tem2;
                tem2 = tem3;
            }*/
        }

    }
}

Und noch eine Frage, bei der Funktion equals, woher weiß ich welcher String zu erst kommt?
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
                        if (wort.charAt(wort.length() - 1) == '.'
                                || wort.charAt(wort.length() - 1) == ','
                                || wort.charAt(wort.length() - 1) == '?'
                                || wort.charAt(wort.length() - 1) == '!'
                                || wort.charAt(wort.length() - 1) == ';'
                                || wort.charAt(wort.length() - 1) == ':') {
                            wort = wort.substring(0, wort.length() - 1);

-umständlich
-was, wann ein anderes Zeichen vorkommt?
-was, wenn das Zeichen nicht am Ende steht, z.B. bei Anführungsstrichen?

mein Vorschlag:
code:
1:
2:
line = line.replaceAll("[^A-Za-z ]", ""); //löscht alles außer Buchstaben und Leerzeichen
String woerter[] = line.split(" ");


Zum Sortieren: schreibe eine Funktion compareTo(Zeichenkette vergleich) in die Klasse Zeichenkette (vergleich darf auch anders heißen, sonst genau diesen Kopf).
Dann kannst du das Sortieren mit Collections.sort() machen.

Wenn dein Vector den Typ Zeichenkette hat, musst du auch eine Zeichenkette hinzufügen, keinen String.

Zitat:
Und noch eine Frage, bei der Funktion equals, woher weiß ich welcher String zu erst kommt?

spielt es denn eine Rolle, ob string1 == string2 ist oder string2 == string1? Aber der erstgenannte string ist der, für den die Funktion zur Gleichheitsprüfung aufgerufen wird.
Auf diesen Beitrag antworten »
Lycaner

Dumme Frage
Wenn ich jetzt eine Funktion in die Klasse Zeichenkette schreibe und der Funktion nur ein Objekt übergebe, wie kann ich es dann sortieren?
Ich mein z.B
Zeichenkette xy= new Zeichenkette("der");
also hat der Objekt xy nur ein String "der" und eine zahl =1
Wie kann ich hier etwas sortieren?
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
Collections.sort(new_datei); //fertige Sortierfunktion, verwendet compareTo() der Klasse Zeichenkette


public class Zeichenkette implements Comparable<Zeichenkette>{ //Instanzen der Klasse können vergleichen werden
//...
    public int compareTo(Zeichenkette vergleich){ //mit dieser Funktion
    	return this.zeichenkette.compareToIgnoreCase(vergleich.zeichenkette); //lässt die eigentliche Arbeit von der Klasse String erledigen, da ich faul bin :)
    }
}
Auf diesen Beitrag antworten »
Lycaner

Das ist nicht genau, dass was ich brauche. Weil ich nicht nur den Vector sortieren muss, sondern auch die Wörter zählen muss, wie oft die vorkommen.
Auf diesen Beitrag antworten »
eulerscheZahl

Das Einrücken des Quellcodes sah bei mir in eclipse anders aus traurig
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
public class Zeichenkette implements Comparable<Zeichenkette>{
      String zeichenkette;
      int anzahl;
    public Zeichenkette(String zeichenkette){
        this.zeichenkette = zeichenkette;
        anzahl = 1;
    }
    
    @Override
    public String toString(){
    	return this.zeichenkette + "   " + anzahl;
    }
    
    public int compareTo(Zeichenkette vergleich){
    	return this.zeichenkette.compareToIgnoreCase(vergleich.zeichenkette);
    }
    
    public boolean equals(String s){
    	return this.zeichenkette.equalsIgnoreCase(s);    	
    }

	public void increment() {
		this.anzahl++;
	}
}




public class Klasse {

    Vector<Zeichenkette> new_datei = new Vector<Zeichenkette>();

    public void leseDaten(String dateiname) {

        File Datei = new File(dateiname);
        try {
            BufferedReader br = new BufferedReader(new FileReader(Datei));

            String line = null;
            boolean zerlegen = false;

            while ((line = br.readLine()) != null) {
               if (line.contains("*** END OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***")) {
            	   break;
               }
               if (zerlegen) {
					line = line.replaceAll("[^A-Za-z ]", "");
					String woerter[] = line.split(" "); 
					for(String wort : woerter){
                        int index;
                        for(index = 0; index < new_datei.size(); index++){
                        	if (new_datei.elementAt(index).equals(wort)) {
                        		break;                      	
                        	}
                        }
						if (index == new_datei.size()) new_datei.add(new Zeichenkette(wort));
						else new_datei.elementAt(index).increment();
					}

                }
                if (line.contains("*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***")) {
                    zerlegen = true;
                }
            }
        } 
        catch (IOException e) {
            System.out.println("Datei " + dateiname + " konnte nicht gelesen werden!");
        }
        Collections.sort(new_datei);
    }

	public void schreibe() {
		for(Zeichenkette z : new_datei)
			System.out.println(z);
	}

}




public class main {
	public static void main(String[] args)
	{
		Klasse k = new Klasse();
		k.leseDaten(System.getProperty("user.dir") + "\\datei.txt");
		k.schreibe();
	}
}
Auf diesen Beitrag antworten »
Airblader

eulerscheZahls Programm ist natürlich vollkommen in Ordnung und ich hoffe, er nimmt es mir nicht böse, wenn ich meine Alternative dazu einstelle (irgendwas muss man ja tun, während die Freundin im Bad ist…).

Insbesondere verwende ich keine eigene Klasse, sondern eine TreeMap, die für genau sowas geschaffen ist. Dann muss ich mir um das (alphabetische!) Sortieren keine Gedanken machen – wenn ich nach Anzahl der Vorkommen sortieren will, dann natürlich schon. Das basiert auf der Annahme, dass die Verwendung von Vector nicht Pflicht war.
Ansonsten habe ich bei mir auch alles auf Englisch gemacht, weil das zum Einen üblich ist, zum anderen mage ich es nicht, zwei Sprachen zu mischen ("line" versus "woerter").
Und ein paar Dinge habe ich natürlich ein klein wenig anders aufgezogen. Wie gesagt, alles nur um vielleicht mal zu sehen, dass man sowas auf verschiedene Arten lösen kann.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;


public class WordCounter {

    private static Map<String, Integer> countedWords = new TreeMap<String, Integer>();

    private static void putWordIntoMap( String word ) {
        String lowercaseWord = word.trim().toLowerCase();

        // we don't want to count spaces
        if( lowercaseWord.isEmpty() ) {
            return;
        }

        int currentCount = 0;
        if( countedWords.containsKey( lowercaseWord ) ) {
            currentCount = countedWords.get( lowercaseWord );
        }

        countedWords.put( lowercaseWord, currentCount + 1 );
    }

    public static void readData (String filename) {
        countedWords.clear();

        File file = new File( filename );
        BufferedReader reader = null;

        try {
            reader = new BufferedReader( new FileReader( file ) );

            String line;
            boolean skipLine = true;

            while( ( line = reader.readLine() ) != null ) {
                    skipLine &= !line.contains( "*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***" );
                    if( skipLine ) {
                        continue;
                    }

                    if( line.contains( "*** END OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***" ) ) {
                        break;
                    }

                    line = line.replaceAll( "[^A-Za-z ]", "" );

                    String words[] = line.split( " " );
                    for( String word : words ) {
                        putWordIntoMap( word );
                    }
            }

        } catch( IOException e ) {
            System.out.println( "Could not read file " + filename );
        } finally {
            try {
                reader.close();
            } catch ( IOException e ) {
                System.out.println( "Exception while closing reader" );
            }
        }
    }

    public static void writeData() {
        for( Map.Entry<String, Integer> entry : countedWords.entrySet() ) {
            System.out.println( entry.getValue() + " : " + entry.getKey() );
        }
    }

    public static void main( String[] args ) {
        readData( "resources/datei.txt" );
        writeData();
    }

}
Auf diesen Beitrag antworten »
eulerscheZahl

Nein, ich nehme dir das nicht krumm, ich kann dabei ja auch noch etwas lernen. Die Map ist wirklich kompakt.
Aber einen kleinen Schwachpunkt hat dein Programm: es wertet bereits die Zeile "*** START OF THIS PROJECT GUTENBERG EBOOK SIDDHARTHA ***" aus. Mein Programm zerlegt erst ab der Zeile danach den Text.
Auf diesen Beitrag antworten »
Airblader

Stimmt. smile

Die skip-Logik kann man natürlich nach Belieben wieder austauschen.

Eine nennenswerte Änderung war übrigens noch, dass ich den BufferedReader wieder geschlossen habe.
Auf diesen Beitrag antworten »
Lycaner

Vielen Dank
Man darf doch ein Vector kopieren oder?
Ich habe im Internet diesen Code gefungen
code:
1:
  Vector<Zeichenkette> topdatei = new Vector(new_datei);

Ich wollte diesen kopierten Vector nach der Häufigkeit der Wörte sortieren.
Deswegen habe ich in die Klasse von Zeichenkette diese Methode geschrieben
code:
1:
2:
3:
4:
5:
6:
 public boolean besserAls(Zeichenkette zweiter) {
        if (this.anzahl >= zweiter.anzahl) {
            return true;
        }
        return false;
      }

Und dann in die Klasse diese Methode geschrieben um die 5 häufigsten Wörter zu ermitteln
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public void top20(){
        Zeichenkette tmp;
        Zeichenkette tmp2=new Zeichenkette(null);
        for (int i = 0; i < topdatei.size(); i++) {
            tmp = this.topdatei.get(i);
            if (tmp.besserAls(tmp2)) {
                        tmp2 = tmp;
                       topdatei.add(1,tmp2);
                    }
        }
       for(int j=0;j<5;j++){
         topdatei.elementAt(j).toString();
       } 
    }

Aber irgendwie macht das Programm nicht das, was ich will(
Auf diesen Beitrag antworten »
Airblader

Wenn es die "Top 5" sein sollen, dann sollte die Methode vielleicht auch "top5" und nicht "top20" heißen – so nebenbei.

Zu Lehrzwecken würde ich dich mal bitten, einfach zu erklären, wie die Methode top20 (bzw. top5) eigentlich funktionieren soll – also einfach nur in Worten. Gefühlt hast du da was geschrieben, ohne genau zu wissen, was du eigentlich schreiben willst.
Außerdem solltest du dir angewöhnen, Probleme detaillierter als "geht nicht" oder "tut nicht, was ich will" zu beschreiben. Was soll es tun, was tut es tatsächlich, wie sehen Input und Output aus, …

Die besserAls-Methode könnte man etwas kürzer auch einfach als

code:
1:
2:
3:
public boolean besserAls(Zeichenkette zweiter) {
    return this.anzahl >= zweiter.anzahl;
}


schreiben, wobei ich einwenden möchte, dass das eine "besser als oder gleich gut"-Relation ist, keine "besser als"-Relation.
Auf diesen Beitrag antworten »
Lycaner

Es sollten 20 Wörter sein aber, weil die Datei zu groß ist, habe ich eine kleine Testdatei gemacht( also alles gelöscht bis zwei Sätze) und es sind weniger Wörter als 20, deswegen auch auf fünf abgeändert.

Zu meinen Gedankengang:
Die Methode besserAls soll true zurückgeben, wenn das erste "Wort" häufiger vorkommt als das zweiten "Wort".
Dann habe ich bei der Methode top20 zwei Variable angelegt. In der zweiten Variabel(tmp2) steht nichts( also "null" und die Zahl ist 1) und die erste Variabel(tmp) wird durch die for-Schleife gefühlt.
Wenn die erste Variabel besser ist als die zweite, dann soll die in der zweiten Variabel gespeichert und gleichzeitig im Vector auf die Position 1 gerückt.

Und wenn der Vector sortiert ist, sollen die ersten fünf "Wörter" ausgegeben werden.

Wenn ich die funktion abrufe, dann bekomme ich diese Meldung
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
und damit kann ich nichts anfangen(
Auf diesen Beitrag antworten »
Airblader

Wenn man sich einen Algorithmus ausdenkt, sollte man ihn zumindest an ein paar Beispielen mal ausprobieren -- insbesondere an Extremfaellen. Spiele doch mal Schritt fuer Schritt durch, welche Ausgabe zu erwarten waere, wenn topdatei so aussaehe:

topDatei = 10, 2, 3, 4, 5, 6


Es ist uebrigens keine gute Idee, ein Objekt zu veraendern, ueber das du iterierst. Ebenfalls weniger gut ist, dass du Eintraege in topDatei nicht verschiebst, sondern klonst.

Was die Exception verursacht kannst du herausfinden, indem du dir den Stacktrace anschaust und/oder mit dem Debugger in Einzelschritten durch das Programm gehst. Das sind Methoden, die man sich schnell angewoehnen sollte, um nach Fehlern zu suchen. Was das Problem ist sagt "ArrayOutOfBoundsException" ja ganz deutlich, du musst nur noch rausfinden wo und warum dies passiert.
Auf diesen Beitrag antworten »
Lycaner

Zitat:
Original von Airblader

Es ist uebrigens keine gute Idee, ein Objekt zu veraendern, ueber das du iterierst. Ebenfalls weniger gut ist, dass du Eintraege in topDatei nicht verschiebst, sondern klonst.


Ich habe versuch die Einträge zu verschieben, leider wird der Vector dann immer länger und länger(
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 public void top20(){

        Zeichenkette tmp;
        Zeichenkette tmp2 = new Zeichenkette(null);
        for (int j = 0; j < topdatei.size(); j++) {
            tmp = this.topdatei.elementAt(j);
            if (tmp.größerAls(tmp2)) {
                Zeichenkette tmp3 = topdatei.elementAt(j);
                topdatei.add(j, tmp2);
                topdatei.add((j+1), tmp3);
            }
        }
    }

Oder funktioniert es anders?
Auf diesen Beitrag antworten »
eulerscheZahl

- Du vergleichst tmp mit tmp2; tmp2 ist aber frisch erstellt und hat keinen nennenswerten Inhalt.
- mit Vector.add fügst du etwas an den Vector dran/ in der Mitte ein. Zum Überschreiben des alten Wertes: Vector.set(index, wert)
- ich nehme an, du willst den Bubblesort implementieren? Da brauchst du zwei verschachtelte Schleifen.
Auf diesen Beitrag antworten »
Lycaner

Ok, ich habe das jetzt
Vielen Dank
Auf diesen Beitrag antworten »
Airblader

Zitat:
Original von Lycaner
Ich habe versuch die Einträge zu verschieben


Nochmal: Es ist keine gute Idee, ein Objekt, über das du iterierst, zu verändern. Es führt einfach zu vielen Problemen. Die etwas einfachere Version der Problematik zeigt es vielleicht besser:

code:
1:
2:
3:
4:
5:
int numberOfRuns = 10;

for( int i = 1; i <= numberOfRuns; i++ ) {
    numberOfRuns++;
}
 
Neue Frage »
Antworten »


Verwandte Themen