Warum werden character, die Leerzeichen sind, nicht korrekt verarbeitet?

M

MarkusFromBerne

Mitglied
Hallo zäme


Mein Programm verarbeitet html-code zu Klartext:
<header>blablaba<body> wird zu "blablabla".

Das Programm tut grundsätzlich, was es soll. Aber es tauchen 2 Schönheitsfehler auf, die ich nicht loswerde:
  1. Die Leerzeichen aus dem Input (=html) sind im Output (=txt) verschwunden und ich hab' keine Ahnung, warum das so ist. Beispiel: Input: <title>Powers of Two</title>. Output: PowersofTwo (meine Erwartung: Powers of Two)
  2. Das Input-file hat 14 Zeilen, das Output-file hat 18 Zeilen. Wo kommen diese 4 neuen Zeilen her?

Vielen Dank im Voraus für Eure Inputs ;-)
Liebe Grüsse,
Markus

PS: input- und output-file sind exemplarisch angehängt.
input: kapitel83a4for3.html
output: kapitel84a6output.txt


Java:
import java.io.*;
import java.util.*;

public class kapitel84a6 {

    public static void main (String[] args) throws IOException{
        // Scanner for user input
        Scanner user = new Scanner( System.in );
        String  inputFileName, outputFileName;

        // prepare the input filkapite
        System.out.print("Input File Name: ");
        inputFileName = user.nextLine().trim();
        File input = new File( inputFileName );   
        Scanner scan = new Scanner( input );   

        // prepare the output file
        System.out.print("Output File Name: ");
        outputFileName = user.nextLine().trim();
        PrintWriter output = new PrintWriter(outputFileName);
      
        //Variablen für while-loop initialisieren
        char charToken = '0';
        boolean trigger = true;
        String char2String="";
        int lineCounter=0;
        String word = "";

        // processing loop
        while( scan.hasNext() )
        {
            lineCounter++;
            String stringToken = scan.next(); //einlesen einer einzelnen Zeile. Wär' nextLine oder gar readLine besser?

            //loop für die einzelnen characters, gültig für jeweils 1 Zeile
            output.print("Zeile "+lineCounter+":\t");
            for (int i=0; i<stringToken.length(); i++){
                //trigger=true; //Zur Sicherheit, es soll im Zweifel recorded werden. War FALSCH; weil das soll ja NICHT für jedes Zeichen neu eruiert werden!
                charToken=' '; //auch zur Sicherheit, falls darin noch Reste aus letztem Durchlauf sind

                charToken=stringToken.charAt(i);
                if (charToken=='<'){ //"send 2 printer" abschalten
                    trigger=false;
                }
                if (charToken=='>'){ //"send 2 printer" wieder anschalten
                    trigger=true;
                }


                //neue Variante: String generieren
                if (trigger==true){ //hier werden die chars für ein Wort gesammelt
                    if (charToken=='>'){}
                    else {
                        char2String=Character.toString(charToken);
                        word+=char2String;
                    }
                }
                if (trigger==false){//hier werden die im vorherigen if gesammelten chars geprintet
                    output.print(word+" "); //Ausgabe des einzelnen Worts ins txt
                    System.out.print(word+" "); //Zur Kontrolle am Bildschirm
                    word=""; //Variable nullen für nächste Runde
                }

      

                /* alte char-Variante
                Der Trigger ist nun auf true, wenn < kommt und auf false, wenn > kommt
                Wenn true gesetzt ist, werden die chars NICHT weiter ins output geroutet
              
                if (trigger==true){
                    //Ausgabe des einzelnen chars/Strings ins txt
              
                    if (charToken=='>'){}
                    else {
                        char2String=Character.toString(charToken);
                        output.print(char2String); //Ausgabe des einzelnen chars/Strings ins txt
                    }
                }
                */
            }
            output.println();
        }
        // close the output file
        output.close();
    }
}
 

Anhänge

  • kapitel84a6output.txt
    441 Bytes · Aufrufe: 6
  • kapitel83a4for3.txt
    305 Bytes · Aufrufe: 3
kneitzel

kneitzel

Top Contributor
Also erst einmal: scan.next() liest nicht eine Zeile sondern das nächste token. Daher ist der Kommentar irreführend, dass Du die Zeile einliest.

Das Verhalten kannst Du also bestimmt selbst ergründen, wenn Du einfach einmal die stringToken, die du gelesen hast, direkt ausgibst.

Genereller Hinweis: Da Token für Token gelesen wird, bekommst Du keine Leerzeichen. Und Du baust ja so lange auf, bis trigger==false, d.h. mehrere Token mit Text hängst Du einfach aneinander ...

Das erklärt dann beide Effekte: Das erste, dass mehr Zeilen in der Ausgabedatei sind und das zweite, dass alles zusammen hängt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
Zrebna Programm kann aus der Konsole nicht gestartet werden (in der IDE läuft es) Java Basics - Anfänger-Themen 2
D Zahlen werden falsch gekürzt :? Java Basics - Anfänger-Themen 27
T Javafx ListView kann nicht gefüllt werden. Java Basics - Anfänger-Themen 6
H Eclipse kann nicht gestartet werden .... Java Basics - Anfänger-Themen 15
R Warum werden hier nur die grün und orangen Linien ausgegeben und der Rest unten nicht? Java Basics - Anfänger-Themen 5
J Eckige Klammern werden nicht erkannt Java Basics - Anfänger-Themen 1
J Klammern werden fälschlicherweise eingelesen Java Basics - Anfänger-Themen 2
Elyt Bei Monopoly werden Felder übersprungen Java Basics - Anfänger-Themen 2
Kirby_Sike Hauptklasse konnte nicht gefunden werden.... Java Basics - Anfänger-Themen 27
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
L Muss eine HttpURLConnection geschlossen werden? Java Basics - Anfänger-Themen 2
B Warum werden meine System.out.println's übersprungen? Java Basics - Anfänger-Themen 9
D java main methode kann nicht kompiliert werden (Erstellen eines Objekts) Java Basics - Anfänger-Themen 6
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
V Array, Symbol kann nicht gefunden werden Java Basics - Anfänger-Themen 2
S TableView Items werden nicht angezeigt (+Verständnisfragen) Java Basics - Anfänger-Themen 15
O Apache: Log-Settings werden nicht gezogen Java Basics - Anfänger-Themen 0
H LayoutRes, Nullable und SystemServices werden in LayoutInflater nicht importiert Java Basics - Anfänger-Themen 9
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
L Input/Output AudioInputStream kann nicht erstellt werden. Java Basics - Anfänger-Themen 3
E Die Hauptklasse konnte nicht gefunden werden. Java Basics - Anfänger-Themen 12
H Hauptklasse ... konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 8
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
S Hauptklasse konnte nicht gefunden werden Java Basics - Anfänger-Themen 0
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
C Matrix-Werte werden nicht wie erwartet ausgegeben Java Basics - Anfänger-Themen 7
A Harshad Zahlen sollen in einem Intervall ausgegeben werden Java Basics - Anfänger-Themen 8
M GUI Startbutton und Titel werden nicht angezeigt Java Basics - Anfänger-Themen 1
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
F Interface JButtons werden nicht angezeigt... Java Basics - Anfänger-Themen 5
DaCrazyJavaExpert Bilder werden nicht angezeigt! Java Basics - Anfänger-Themen 6
DaCrazyJavaExpert JLabels werden nicht angezeigt Java Basics - Anfänger-Themen 4
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
S Fehler: Hauptklasse bin.demo.Start konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 2
M Klassen Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 17
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
S Classpath "Hauptklasse konnte nicht gefunden oder geladen werden" Java Basics - Anfänger-Themen 6
T In Konsole darf nichts falsches eingetippt werden?! Java Basics - Anfänger-Themen 7
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
C AppletViewer-Eigenschaftendatei kann nicht gelesen werden Java Basics - Anfänger-Themen 0
D Erste Schritte JFrame Inhalte werden nicht angezeigt Java Basics - Anfänger-Themen 8
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
H überprüfen ob in Array gleiche int-Zahlen gespeichert werden. Java Basics - Anfänger-Themen 7
P Threads Prozess kann nicht über die GUI gestartet werden Java Basics - Anfänger-Themen 8
D Prozente werden falsch berechnet Java Basics - Anfänger-Themen 8
H javac.exe konnte nicht gefunden werden Java Basics - Anfänger-Themen 2
H Methoden können nicht verwendet werden Java Basics - Anfänger-Themen 10
P Programm kann über CMD nicht ausgeführt werden Java Basics - Anfänger-Themen 2
C Java Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 14
J Kann der Typ eines Objekts ausgegeben werden? Java Basics - Anfänger-Themen 11
K Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 3
N String kann nicht in Wochentag konvertiert werden Java Basics - Anfänger-Themen 6
C Klassen Sudoku-Spiel Werte werden nicht gesetzt Java Basics - Anfänger-Themen 4
B PATH kann nicht geändert werden Java Basics - Anfänger-Themen 2
J JDK installieren Hauptklasse .... konnte nicht geladen werden. Java Basics - Anfänger-Themen 4
K Klassen Hilfe - Hauptklasse kann nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 5
D Classpath Bild kann in .jar nicht geladen werden Java Basics - Anfänger-Themen 2
E Shell: Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 3
C Klassen Hauptklasse kann nicht gefunden werden Java Basics - Anfänger-Themen 4
W Was passiert mit Objekten die nicht in Objektvariablen initialisiert werden ? Java Basics - Anfänger-Themen 3
S Methoden Linked List Methoden können nicht aufgerufen werden Java Basics - Anfänger-Themen 1
V IF-Statements werden ignoriert... Java Basics - Anfänger-Themen 1
J Hauptklasse kann nicht gefunden werden! HILFE!!!! Java Basics - Anfänger-Themen 1
M Interpreter-Fehler Klasse kann nicht gefunden werden. Java Basics - Anfänger-Themen 2
D javac kann trotz PATH-Eintrag nicht gefunden werden (Hello World) Java Basics - Anfänger-Themen 10
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
M Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 6
L [ARRAY] Werden hier die Indezes oder die Werte vergliechen? Java Basics - Anfänger-Themen 4
P Objekte in Vector werden überschrieben Java Basics - Anfänger-Themen 4
E Dateien werden nicht gelöscht Java Basics - Anfänger-Themen 10
V Methoden Objekte werden anscheinend nicht erstellt Java Basics - Anfänger-Themen 3
W HTML Code, Umlaute werden nicht richtig dargestellt Java Basics - Anfänger-Themen 7
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
B Klassen Objekte werden immer überschrieben Java Basics - Anfänger-Themen 10
R Compiler-Fehler javac -> "hauptklasse com.sun.tools.javac.main konnte nicht gefunden oder geladen werden" Java Basics - Anfänger-Themen 33
S Input/Output Hauptklasse kann nicht gefunden oder geladen werden Java Basics - Anfänger-Themen 2
T Alte Einträge im Array werden von neuen überschrieben Java Basics - Anfänger-Themen 5
H Punkte werden falsch verbunden Java Basics - Anfänger-Themen 6
M Arrayfelder werden trotz Beschränkung unbeschrenkt ausgegeben Java Basics - Anfänger-Themen 2
lord239123 Buttons werden nicht angezeigt Java Basics - Anfänger-Themen 3
V Welche Exceptions müssen importiert werden? Java Basics - Anfänger-Themen 3
S Ein Rechteck soll an einer Seite gespiegelt werden. Java Basics - Anfänger-Themen 5
A Klassen JTextField eigtl leer aber es werden Methoden ect. angezeigt Java Basics - Anfänger-Themen 9
S Datei kann nicht eingelesen werden Java Basics - Anfänger-Themen 8
B Array soll an Konstruktor übergeben werden..Hilfe! Java Basics - Anfänger-Themen 16
E Hauptklasse konnte nicht gefunden werden... Java Basics - Anfänger-Themen 6
K org/slf4j/LoggerFactory kann nicht gefunden werden Java Basics - Anfänger-Themen 16
P Classpath jdbc-Treiber kann nach export in jar-File nicht mehr geladen werden Java Basics - Anfänger-Themen 2
B Buttondrücke werden nicht gezählt Java Basics - Anfänger-Themen 2
B Buttondrücke werden nicht gezählt Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben