# Spelling Typo Generator in Java



## superdome125 (9. Sep 2011)

Hallo Leute,
ich hoffe Ihr könnt mir helfen zerbreche mir schon seit 2 Tagen den Kopf.
Ich stehe vor einem Problem das ich selber nicht lösen kann. Da scheitert es bei mir an der Umsetzung in Java. Hatte das zwar 2 Semester lang aber so gut bin ich da auch nicht mehr.

Ich schreibe gerade ein Programm das mir eine csv Liste ließt die Wörter enthält. Diese wird in eine ArrayList überführt. Das ist soweit kein Problem. 
Was passieren soll: Das erte Wort der Liste soll genommen werden und davon dann Buchstaben entfernt werden, die daraus enstandenen fehlerhaften Wörter sollen dann zum schluss wieder in eine ArrayList abgelegt werden aber hintereinandergeschrieben und mit ";" getrennt.
Bsp am Wort: Stuhl
tuhl
Suhl
Stul
Stuh
//also entfernen des 1ten Buchstaben und speichern des fehlerhaften Wortes
//entfernen des 2ten Buchstabens...usw.

Es scheitert bei den Iterationen da ich möchte das die gesamte ArrayList druchgegangen wird und ich dann für jedes Wort die passenden fehlerhaften Wörter gespeichert haben möchte.
Zum Schluss soll das ganze so im einer ArrayList aussehen: arr.get(0) = [tuhl; Suhl; Stul; Stuh]

Wozu das ganze? Ich möchte das hier nachprogrammieren
Spelling Typo Generator ~ Keyword Mispelling Tool
mit den Optionen 
Skip letter
Double letters
Reverse letters

Mein Quellcode bisher enthält nur die Methode zum einlesen der csv und überführen in eine ArrayList.

Hat jemand eine Idee oder Denkanstöße wie ich das Lösen kann?

Grüße 
Dominik


----------



## Andi_CH (9. Sep 2011)

Standardfragen: 
Was hast du denn schon versucht? 
Woran scheitert es konkret?


----------



## superdome125 (9. Sep 2011)

Hi, 
versucht habe ich zunächst mittels Iterator die ArrayList mit den Wörtern zu durchlaufen,
dann mit toCharArray so für jedes Wort ein CharArray erstellt. Dann eine for-schleife mit reingemacht damit dann das CharArray durchlaufen wird und hier fehlt mir die Idee wie ich die Buchstaben rauslösche und es dann in eine neue ArrayList speichern kann.


----------



## superdome125 (9. Sep 2011)

```
import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;
import java.util.Iterator;

public class MISGenerator {

      private String zeile;

      private ArrayList<String> list1 = new ArrayList<String>();

      private ArrayList<String> list2 = new ArrayList<String>();

      private ArrayList<String> result = new ArrayList<String>();

      private String s1;

      // private String s2;
      int x;
      char buchstabe;
      char buchstabe2;
      char[] wortx;
      String ausgabeWort;
      int wortlaenge;
      char[] wortT;
      int counter = 0;

      public static void main(String[] args) {

            MISGenerator c = new MISGenerator();

            c.leseData();
            c.bearbeiteDaten();
            //
            //
            //
            // c.saveData();

      }

      public void leseData() {

            try {

                  FileReader file = new FileReader("Mappe2.csv");

                  BufferedReader data = new BufferedReader(file);

                  while ((zeile = data.readLine()) != null) {

                        s1 = zeile.substring(0);
                        list1.add(s1);

                        // s2 = zeile.substring(zeile.indexOf(';') +1, zeile.length());
                        // list2.add(s2);
                        //
                  }

            } catch (FileNotFoundException e) {

                  System.out.println("Datei nicht gefunden");

            } catch (IOException e) {

                  System.out.println("E/A-Fehler");

            }

            for (int i = 0; i < list1.size(); i++) {

                  // System.out.println(list1.get(i));
            }

      }

      public void bearbeiteDaten() {

//          for (int i = 0; i < list1.size(); i++) {
            
            
            StringBuilder sb = new StringBuilder();
            
            
            Iterator<String> itr = list1.iterator();
            
            
            
                  while(itr.hasNext()){
                        
                  char[] wortx = itr.next().toCharArray();
            
                  sb.append(wortx, 0, wortx.length);
                  
//                char[] wortx = ivar.toCharArray();
                  wortlaenge = wortx.length;

      
                  for (int f = 0; f < sb.length(); f++) {
                        
                             for (int x = 0; x < sb.length(); x++) {
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                             
                             }
                             list2.add(sb.charAt(f)+"");
                        
//                      list2.add(wortx[f] + "");
//                      
//                      if(f==wortx.length-1){
//                            list2.add(";");
//                      }
//                      
//                      
                        
                        

                  }// ende forschleife

                  
//          }// ende forschleife

            

            }//endwhile

                  
                  for (int i = 0; i < sb.length(); i++) {
                        
                        System.out.println(list2.get(i));

                        //System.out.println(sb.charAt(i));
                  }
                  
                  
                  
                  
                  
                  
                  
                  
                  
                  
      }// ende Methode

      public void schreibeData() {

            try

            {

                  File file = new File("Ergebnis.csv");

                  FileWriter fw = new FileWriter(file);

                  for (int i = 0; i < result.size(); i++) {

                        String zwischenspeicher = (String) result.get(i);

                        fw.write(zwischenspeicher + "\n");

                  }

                  fw.flush();

                  fw.close();

            }

            catch (IOException e)

            {

                  e.printStackTrace();

            }

      }

}
```


----------



## Andi_CH (9. Sep 2011)

Na, das ist ja unlesbar - entferne mal alle 1000 Leerzeilen - was willst du überhaupt iterieren?
Dann versuchst du viel zu viel auf einmal - oder geht das Lesen schon?

Keine Ahnung ob du so etwas suchst:


```
import java.util.ArrayList;

public class TypoGenerator {

	private static String removeChar(String word, int pos) {
		if (pos == 0) {
			return word.substring(1);
		} else if (pos==word.length()-1) {
			return word.substring(0, word.length()-1);	
		} else {
			return word.substring(0, pos) + word.subSequence(pos+1, word.length());
		}
	}

	public static ArrayList<String> generate(String word) {
		ArrayList<String> retVal = new ArrayList<String>();
		for (int i=0; i<word.length(); i++) {
			String res = removeChar(word, i);
			if (res.length()>1)
				retVal.addAll(generate(res));
			retVal.add(res);
		}
		return retVal;
	}

	public static void main (String... args) {
		ArrayList<String> res = generate("ABC");
		System.out.println(res);
	}
}
```


----------



## Andi_CH (9. Sep 2011)

Ach - die Resultat-Arrayliste in einen String mit ; dazwischen überführen schaffst du sicher selbst ;-)


----------



## superdome125 (9. Sep 2011)

Das mit den vielen Leerzeichen tut mir leid hab vergessen es vor dem posten zu formatieren.

Die ArrayList list1 enthält schon die Daten aus einer csv, das einlesen ist kein Problem.
Ich will die list1 iterieren und dann mittels char[] wortx = itr.next().toCharArray() 
für jedes in der list1 vorkommende Wort ein Char[] machen. 

Nun will ich in einer Schleife jedes Wort so bearbeiten das es diesem Format entspricht
Beispielwort: Stuhl
list2 enthält dann für diese wort im erten Arrayplatz : "tuhl";"Suhl";"Sthl";"Stul";"Stuh" 

Hoffe ich drücke mich verständlich genug aus was mein Problem angeht.


----------



## superdome125 (9. Sep 2011)

Danke schon mal für deine Hilfe 

Ich komm jedoch mit den zwei Methoden nicht weiter, stehe nun voller verwirrtheit auf dem Schlauch und weis nicht wie ich die in meinem Code unterbringen soll. 

Kannst du kurz erläutern was die beiden Methoden machen?
Die removeChar() entfernt von einem übergebenen String den Buchstaben an der Position int 
Aber die andere kann ich nicht ganz nachvollziehen.


----------



## superdome125 (9. Sep 2011)

@Andi_CH
Danke nochmals für deine Hilfe die Frage vorhin hat sich erübrigt, Programm tut was es soll 

Jetzt bin ich aber nochmals ratlos...
Eine weitere Methode soll mir die eingelesenen Wörter mit doppelten Buchstaben versehen. 
Hab aber irgendwie einen Denkfehler, bekomme als Ausgabe nur das folgende: 
DDom
dAdidas
iAdidas
sAirstep
iAirstep

Ausgangsliste ist:
Dom
Adidas
Airstep

Was es sein soll:
DDom
Doom
Domm
usw..



```
import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;
import java.util.Iterator;

public class MISGenerator {

	private String zeile;

	private ArrayList<String> list1 = new ArrayList<String>();

	private ArrayList<String> list2 = new ArrayList<String>();

	private ArrayList<String> list3 = new ArrayList<String>();

	private ArrayList<String> list4 = new ArrayList<String>();

	private ArrayList<String> result = new ArrayList<String>();

	private String s1;

	public static void main(String[] args) {

		MISGenerator c = new MISGenerator();

		c.leseData();
		// c.skipLetters();
		c.doubleLetters();
	}

	public void leseData() {

		try {

			FileReader file = new FileReader("Mappe2.csv");

			BufferedReader data = new BufferedReader(file);

			while ((zeile = data.readLine()) != null) {

				s1 = zeile.substring(0);
				list1.add(s1);

			}

		} catch (FileNotFoundException e) {

			System.out.println("Datei nicht gefunden");

		} catch (IOException e) {

			System.out.println("E/A-Fehler");

		}

	}

	private static String removeChar(String word, int pos) {
		if (pos == 0) {
			return word.substring(1);
		} else if (pos == word.length() - 1) {
			return word.substring(0, word.length() - 1);
		} else {
			return word.substring(0, pos)
					+ word.subSequence(pos + 1, word.length());
		}
	}

	public static ArrayList<String> generate(String word) {
		ArrayList<String> retVal = new ArrayList<String>();
		for (int i = 0; i < word.length(); i++) {
			String res = removeChar(word, i);
			if (res.length() > 1)
				retVal.addAll(generate(res));
			retVal.add(res);
		}
		return retVal;
	}

	public void skipLetters() {

		String s = null;

		for (int i = 0; i < list1.size(); i++) {
			s = list1.get(i).toString();

			for (int x = 0; x < s.length(); x++) {

				list2.add(removeChar(s, x));

			}

		}

		for (int i = 0; i < list2.size(); i++) {
			System.out.println(list2.get(i));
		}

	}// ende Methode

	public void doubleLetters() {

		for (int i = 0; i < list1.size(); i++) {
			String word = list1.get(i).toString();
			String a = word;

			for (int x = 0; x < word.length(); x++) {

				char buchstabe = word.charAt(x);
				a.substring(x, a.length());
				list3.add(x, buchstabe + a);

			}

			System.out.println(list3.get(i));
		}

	}

	public void schreibeData() {

		try

		{

			File file = new File("Ergebnis.csv");

			FileWriter fw = new FileWriter(file);

			for (int i = 0; i < result.size(); i++) {

				String zwischenspeicher = (String) result.get(i);

				fw.write(zwischenspeicher + "\n");

			}

			fw.flush();

			fw.close();

		}

		catch (IOException e)

		{

			e.printStackTrace();

		}

	}

}
```
Danke allen die sich schonmal die Mühe gemacht haben.


----------



## JohannisderKaeufer (10. Sep 2011)

superdome125 hat gesagt.:


> ```
> private static String removeChar(String word, int pos) {
> if (pos == 0) {
> return word.substring(1);
> ...



Wenn das funktioniert dann musst du um doppelte Buchstaben zu bekommen nur dass hier ein wenig anpassen und genauso aufrufen, wie die methode removeChar()


```
private static String doubleChar(String word, int pos) {
    String doubledChar = word.charAt(pos) + word.charAt(pos);
        if (pos == 0) {
            return doubledChar + word.substring(1);
        } else if (pos == word.length() - 1) {
            return word.substring(0, word.length() - 1) + doubledChar;
        } else {
            return word.substring(0, pos)
                    + doubledChar +
                    + word.subSequence(pos + 1, word.length());
        }
    }
```

Den Buchstaben suchen mit charAt(pos)
Einen String erzeugen, der dem doppelten Buchstaben entspricht.

Diesen String entweder am Anfang hinzufügen
oder diesen String am Ende hinzufügen
oder diesen String in der Mitte hinzufügen.


----------



## Ein Keks (11. Sep 2011)

Versuchs mal damit: StringBuilder


----------



## Andi_CH (12. Sep 2011)

So ganz ohne Programmierkenntnisse und Plan ist es halt schwierig etwas umzuseetzen und hilft auch StrginBuilder oder XyzClass rein gar NICHTS.

So wie ich removeChar gemacht habe musst du nun doubleChar implementieren - Teile den String an einer gegebenen Position in einen vorderen und hinteren Teil. Bestimme den Buchstaben den du dazwischen haben willst und bau dir mit dem vorderenTeil, dem Buchstaben und dem hinteren Teil einen neuen String zusammen. That's it

... und wenn das eben gesagte unverständlich tönt, dann spiele das Ganze mit Zettelchen (String), Schere (vorderer und hinterer Teil basteln) und kleinen Zettelchen (Buchstaben) auf dem Tisch durch, protokoliere das Ganze in deutscher (oder einer anderen Sprache) und übersetze das dann Satz für Satz nach Java - ich mach das auch nicht viel anders.


Auch ja das habe ich noch vergessen - testen.

Teste das Ganze dann mit verschiednenen Strings und Positionen
z.B.

doubleChar("ABC", 0);
doubleChar("ABC", 1);
doubleChar("ABC", 2);
doubleChar("ABC", 5);

und überlege dir was bei jedem der Fälle passieren soll, warum es möglicherweise nicht geht und wie du den Code erweitern musst, dass es geht ...

so als erste Variante auf der du aufbauen kannst:


```
public static String doubleChar(String word, int pos) {
	return word.substring(0, pos) + word.charAt(pos) + word.substring(pos);
}
```


----------



## superdome125 (12. Sep 2011)

Danke für die Hilfe  
Hier nochmal der fertige Code

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

public class MISGenerator {

	private String zeile;

	private ArrayList<String> list1 = new ArrayList<String>();

	private ArrayList<String> list2 = new ArrayList<String>();

	private ArrayList<String> list3 = new ArrayList<String>();

	private ArrayList<String> list4 = new ArrayList<String>();

	private ArrayList<String> result = new ArrayList<String>();

	private String s1;

	public static void main(String[] args) {

		MISGenerator c = new MISGenerator();

		c.leseData();
		c.skipLetters();
		c.doubleLetters();
		c.reverseLetters();
		c.formatData();
		c.schreibeData();
	}

	public void leseData() {

		try {

			FileReader file = new FileReader("Mappe2.csv");

			BufferedReader data = new BufferedReader(file);

			while ((zeile = data.readLine()) != null) {

				s1 = zeile.substring(0);
				list1.add(s1);

			}

		} catch (FileNotFoundException e) {

			System.out.println("Datei nicht gefunden");

		} catch (IOException e) {

			System.out.println("E/A-Fehler");

		}

	}

	private static String removeChar(String word, int pos) {
		if (pos == 0) {
			return word.substring(1);
		} else if (pos == word.length() - 1) {
			return word.substring(0, word.length() - 1);
		} else {
			return word.substring(0, pos)
					+ word.subSequence(pos + 1, word.length());
		}
	}

	public static ArrayList<String> generate(String word) {
		ArrayList<String> retVal = new ArrayList<String>();
		for (int i = 0; i < word.length(); i++) {
			String res = removeChar(word, i);
			if (res.length() > 1)
				retVal.addAll(generate(res));
			retVal.add(res);
		}
		return retVal;
	}

	public void skipLetters() {

		String s = null;

		for (int i = 0; i < list1.size(); i++) {
			s = list1.get(i).toString();

			for (int x = 0; x < s.length(); x++) {

				list2.add(removeChar(s, x) + ",");
				// list4.add(list2.get(x)+ ",".toString());
			}

		}

		// for (int i = 0; i < list2.size(); i++) {
		// System.out.println(list2.get(i));
		// }

	}// ende Methode

	public void doubleLetters() {
		for (int i = 0; i < list1.size(); i++) {
			String word = list1.get(i).toString();
			String ergebnis = null;

			for (int j = 0; j < word.length(); j++) {
				if (j == 0) {
					// list3.add(word);
					ergebnis = word.substring(j, j + 1)
							+ word.substring(j, word.length());
					list3.add(ergebnis + ",");
					// result.add(list3.get(j) + ",");
				} else {

					ergebnis = word.substring(0, j + 1)
							+ word.substring(j, j + 1)
							+ word.substring(j + 1, word.length());
					list3.add(ergebnis);
					// result.add(list3.get(j)+ ",");

				}// end if-else
			}// end for
		}// end for

		// for (int k = 0; k < list3.size(); k++) {
		//
		// System.out.println(list3.get(k));
		// }// end for
	}// end method doubleLetters

	public void reverseLetters() {

		for (int i = 0; i < list1.size(); i++) {
			String word = list1.get(i).toString();
			String ergebnis = null;

			for (int j = 0; j < word.length() - 1; j++) {

				if (j == 0) {

					ergebnis = word.substring(j + 1, j + 2)
							+ word.substring(j, j + 1)
							+ word.substring(j + 2, word.length());
					list4.add(ergebnis + ",");
					// if(word.length() <= j){
					// result.add(list4.get(j)+ ",");
					// }

				} else {

					ergebnis = word.substring(0, j)
							+ word.substring(j + 1, j + 2)
							+ word.substring(j, j + 1)
							+ word.substring(j + 2, word.length());

					list4.add(ergebnis);
					// if(word.length() <= j){
					// result.add(list4.get(j)+ ",");
					// }

				}// end if-else

			}// end for

		}// end for

		// for (int k = 0; k < list3.size(); k++) {
		//
		// System.out.println(list3.get(k));
		// }// end for

	}

	public void formatData() {

		System.out.println(list2.size() + "-" + list3.size() + "-"
				+ list4.size() + "-" + result.size());
		for (int i = 0; i < result.size(); i++) {

			System.out.println(result.get(i));
		}
	}// end method formatData

	public void schreibeData() {

		try

		{

			File file = new File("Ergebnis.csv");

			FileWriter fw = new FileWriter(file);

			for (int i = 0; i < result.size(); i++) {

				String zwischenspeicher = (String) result.get(i);

				fw.write(zwischenspeicher + "\n");

			}

			fw.flush();

			fw.close();

		}

		catch (IOException e)

		{

			e.printStackTrace();

		}

	}

}
[/code]

Die einzelnen Methoden tun was sie sollen.

Könnte mir jemand noch einen Tipp verraten wie ich das Formatieren kann...
Möchte das ganze ja in einer Liste zum Schluss stehen haben in der Form
arr(0):= word1, word1(skippLetters angewendet), word1(doubleLetters), word1(reverseLetters)
Bsp.: apfel, pfel,afel,apel,apfl,apfe,aapfel,appfel,apffel,apfeel,apfell,pafel,afpel,apefl,apfle

Habe schon versucht die einzelnen Listen zu verknüpfen aber da geht dann die Wortzugehörigkeit verloren, hat da jemand noch Ahnung?


----------



## Andi_CH (13. Sep 2011)

Wenn der Code les- und verwendbar wäre würde ich ja - aber so ... Nein Danke


----------



## superdome125 (13. Sep 2011)

```
import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

public class MISGenerator {

	private String zeile;

	public ArrayList<String> list1 = new ArrayList<String>();

	// public ArrayList<String> list2 = new ArrayList<String>();
	//
	// public ArrayList<String> list3 = new ArrayList<String>();
	//
	// public ArrayList<String> list4 = new ArrayList<String>();
	//
	// public static ArrayList<String> list5 = new ArrayList<String>();
	//
	public static ArrayList<String> list6 = new ArrayList<String>();

	public ArrayList<String> result = new ArrayList<String>();

	public String s1;

	public MISGenerator() {

	}

	public ArrayList<String> leseData() {

		try {

			FileReader file = new FileReader("Mappe2.csv");

			BufferedReader data = new BufferedReader(file);

			while ((zeile = data.readLine()) != null) {

				s1 = zeile.substring(0);
				list1.add(s1);

			}

			file.close();
			data.close();

		} catch (FileNotFoundException e) {

			System.out.println("Datei nicht gefunden");

		} catch (IOException e) {

			System.out.println("E/A-Fehler");

		}
		return list6;

	}

	private static String removeChar(String word, int pos) {
		if (pos == 0) {
			return word.substring(1);
		} else if (pos == word.length() - 1) {
			return word.substring(0, word.length() - 1);
		} else {
			return word.substring(0, pos)
					+ word.subSequence(pos + 1, word.length());
		}
	}

	public static ArrayList<String> generate(String word) {
		ArrayList<String> retVal = new ArrayList<String>();
		for (int i = 0; i < word.length(); i++) {
			String res = removeChar(word, i);
			if (res.length() > 1)
				retVal.addAll(generate(res));
			retVal.add(res);
		}
		return retVal;
	}

	public String skipLetters(String word) {

		String s = null;
		String w = word;

		// for (int i = 0; i < list1.size(); i++) {
		// s = list1.get(i).toString();

		for (int x = 0; x < w.length() - 1; x++) {

			// list2.add(removeChar(s, x));
			w += removeChar(w, x) + ",";
		}

		// }
		return w;

		// for (int i = 0; i < list2.size(); i++) {
		// System.out.println(list2.get(i));
		// }

	}// ende Methode

	public String doubleLetters(String word) {
		String w = word;

		// for (int i = 0; i < list1.size(); i++) {
		// w = list1.get(i).toString();
		String ergebnis = null;

		for (int j = 0; j < w.length(); j++) {
			if (j == 0) {

				ergebnis = w.substring(j, j + 1) + w.substring(j, w.length());

				// list3.add(ergebnis);
				w += ergebnis + ",";
			} else {

				ergebnis = w.substring(0, j + 1) + w.substring(j, j + 1)
						+ w.substring(j + 1, w.length());

				// list3.add(ergebnis);
				w += ergebnis + ",";

			}// end if-else
		}// end for
			// }// end for
		return w;

		// for (int k = 0; k < list3.size(); k++) {
		//
		// System.out.println(list3.get(k));
		// }// end for
	}// end method doubleLetters

	public String reverseLetters(String word) {
		String w = word;

		// for (int i = 0; i < list1.size(); i++) {
		// w = list1.get(i).toString();
		String ergebnis = null;

		for (int j = 0; j < w.length() - 1; j++) {

			if (j == 0) {

				ergebnis = w.substring(j + 1, j + 2) + w.substring(j, j + 1)
						+ w.substring(j + 2, w.length());
				// list4.add(ergebnis);
				w += ergebnis + ",";
			} else {
				if (w.length() >= 3) {
					ergebnis = word.substring(0, j)
							+ word.substring(j + 1, j + 2)
							+ word.substring(j, j + 1)
							+ word.substring(j + 2, word.length());
					w += ergebnis + ",";
					// list4.add(ergebnis);
				}// endif

			}// end if-else

		}// end for

		// }// end for
		return w;

		// for (int k = 0; k < list4.size(); k++) {
		//
		// System.out.println(list4.get(k));
		// }// end for

	}

	// public void formatData() {
	// String wort = null;
	// String res;
	// System.out.println(list1.size() + "-" + list2.size() + "-"
	// + list3.size() + "-" + list4.size() + "-" + result.size());
	//
	// for (int i = 0; i < list1.size(); i++) {
	// wort = list1.get(i).toString();
	//
	//
	//
	//
	//
	//
	//
	//
	//
	// }// end for
	//
	//
	//
	//
	//
	// for (int i = 0; i < list5.size(); i++) {
	// System.out.println(list5.get(i));
	// }
	// }// end method formatData

	public void schreibeData() {

		try

		{

			File file = new File("Ergebnis.csv");

			FileWriter fw = new FileWriter(file);

			for (int i = 0; i < result.size(); i++) {

				String zwischenspeicher = (String) result.get(i);

				fw.write(zwischenspeicher + "\n");

			}

			fw.flush();

			fw.close();

		}

		catch (IOException e)

		{

			e.printStackTrace();

		}

	}

}
```

Und hier die ausführbare Klasse


```
import java.util.ArrayList;

public class MISGeneratorRun {

	static MISGenerator c = new MISGenerator();
	static ArrayList<String> arr = new ArrayList<String>();

	public static void main(String[] args) {
		c.leseData();
		for (int i = 0; i < c.list1.size(); i++) {
			arr.add(c.skipLetters(c.list1.get(i)) + ","
					+ c.doubleLetters(c.list1.get(i)) + ","
					+ c.reverseLetters(c.list1.get(i)));

		}
		for (int i = 0; i < arr.size(); i++) {

			System.out.println(arr.get(i));
		}

	}

}
```

Schmeisst nen Fehler: 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Unknown Source)
	at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
	at java.lang.AbstractStringBuilder.append(Unknown Source)
	at java.lang.StringBuilder.append(Unknown Source)


----------



## Gast2 (13. Sep 2011)

Siehe API:


			
				http://download.oracle.com/javase/1.4.2/docs/api/java/lang/OutOfMemoryError.html hat gesagt.:
			
		

> Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector.



Deinen Code habe ich mir nicht angeschaut, aber vllt reichts wenn du den Speicher erhöhst. Siehe Google.


----------



## superdome125 (13. Sep 2011)

So hab den Fehler gefunden, ich hatte eine Endlosschleife in jeder Methode, hat sich wohl eingeschlichen als ich die Methoden abgeändert hab.
Funktioniert nun einwandfrei. (Thema kann geschlossen werden)

Danke allen die mir geholfen haben, auch den Leuten aus dem Chat  
Tolles Forum!


----------

