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:
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
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:
- 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)
- 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();
}
}