.txt Datei einlesen und auf der Konsole ausgeben lassen

Ru$h

Aktives Mitglied
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 🙂

Code:
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());
       
        }
 
input ist ein Parameter, also die .txt Datei die ich mit hineingeben möchte.
Oder schreibt man den Parameter hier anders?
 
Indem du die Datei einliest
Java:
String line = "";
while((line = in.readLine()) != null) {
     // hier kannst du jetzt über jedes Zeichen in "line" iterieren
}
 
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 🙁
Java:
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;
    }
 
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.
 
Also wenn ich folgendes
Java:
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?
 

Neue Themen


Zurück
Oben