# .txt Datei einlesen und auf der Konsole ausgeben lassen



## Ru$h (29. Apr 2018)

Hallo,
die folgende Methode soll die Datei Gedicht.txt einlesen und alle Buchstaben alle Buchstaben zu Kleinbuchstaben machen und ä ö ü und ß durch ae,.. ersetzen. Auf der Konsole wird mir aber nur 

"Gedicht.txt" ausgegeben.

Wo ist mein Fehler in der Methode, sodass aif der Konsole der Text der txt-Datei ausgeben wird 


```
public static void clear(String input) throws Exception {
        BufferedReader in = new BufferedReader(new FileReader(input));
          String line;
        //return in.readLine();
          final StringBuffer output = new StringBuffer();
            for (int i = 0; i < input.length(); i++) {
                switch (input.charAt(i)) {
                case '\u00C4' : output.append("ae");// Ä
                break;
                case '\u00D6' : output.append("oe");// Ö
                break;
                case '\u00DC' : output.append("ue");// Ü
                break;
                case '\u00DF' : output.append("ss");// ß
                break;
                default : output.append(input.toLowerCase().charAt(i));
                break;
               
                }
               
            }
           
            System.out.println(output.toString());
       
        }
```


----------



## Robat (29. Apr 2018)

Was ist denn `input`?


----------



## Ru$h (29. Apr 2018)

input ist ein Parameter, also die .txt Datei die ich mit hineingeben möchte.
Oder schreibt man den Parameter hier anders?


----------



## CodeGirl (29. Apr 2018)

Du iterierst ja auch über Input und nicht über den File-Reader, also iterierst du nur über den Dateinamen....


----------



## Robat (29. Apr 2018)

Dann solltest du die Datei auch einlesen. Momentan iterierst du ja nur über input  ..


----------



## Ru$h (29. Apr 2018)

Wie kann ich das abändern, sodass ich über den filereadeer iteriere?


----------



## Robat (29. Apr 2018)

Indem du die Datei einliest

```
String line = "";
while((line = in.readLine()) != null) {
     // hier kannst du jetzt über jedes Zeichen in "line" iterieren
}
```


----------



## Ru$h (29. Apr 2018)

wenn ich den Code nun um eine weitere Methode erweitere um den eingelesen Text zu verschlüsseln,
wird der verschlüsselte Text nicht angzeigt. ABER WAARUM. Ich werde wahnsinnig 

```
public static void clear(String input, int schluessel) throws Exception {
        BufferedReader in = new BufferedReader(new FileReader(input));
          String line = "";
          while((line = in.readLine()) != null) {
          final StringBuffer output = new StringBuffer();
            for (int i = 0; i < line.length(); i++) {
                switch (line.charAt(i)) {
                case 'ä' : output.append("ae");// Ä
                break;
                case 'ö' : output.append("oe");// Ö
                break;
                case 'ü' : output.append("ue");// Ü
                break;
                case 'ß' : output.append("ss");// ß
                break;
                default : output.append(line.toLowerCase().charAt(i));
                break;
                }
            }    
            System.out.println(output.toString());
          }
          while((line = in.readLine()) != null) {
              final StringBuffer output1 = new StringBuffer();
              char[] chars = line.toCharArray();
              for (int i = 0; i < line.length(); i++) {
                  chars[i] = verschluesseln(chars[i], schluessel);
                  System.out.println(String.valueOf(chars));
                      }
          }
    }   
    public static char verschluesseln(char c, int schluessel){
         if(c >= 'a' && c <= 'z')
                return (char)((c-'a'*schluessel)%26 + 'a');
            else
                return c;
    }
```


----------



## DrZoidberg (30. Apr 2018)

Ändere den Ausdruck "c-'a'*schluessel" ab in "(c-'a')*schluessel".


----------



## Ru$h (30. Apr 2018)

Es funktioniert dennoch nicht


----------



## fhoffmann (30. Apr 2018)

Du hast zwei while-Schleifen, die die Datei lesen sollen. Die erste endet, wenn du die Datei fertig gelesen hast. Die zweite wird dann nicht mehr betreten.


----------



## Ru$h (30. Apr 2018)

Also wenn ich folgendes 

```
char[] chars = line.toCharArray();
              for (int i = 0; i < line.length(); i++) {
                  chars[i] = verschluesseln(chars[i], schluessel);
                  System.out.println(String.valueOf(chars));
```
In die erste while Schleife reinkopieren, sollte es dann funktioren?


----------

