BOA! HAMMER
Es funktionier zwar auf deine weise aber ich muss es so machen das ich die beien exporter(s) benutze!
Ich hoffe du kannst mir auf diese frage eine lösung geben:
Ich schreibe mal eifahc die ganz class ! ( ich hoffe du nimmst dir zeit dafür , also ich würde es nicht tun

)
Also unsere aufgabe ist es eine html datei einzulesen ( rot.jpg ist das bild auf einem feld und die zahl danach ist der alt eintag!
wir müssen diese html datei einlesen ( was unser leher schon für uns gemacht hat ) und ihn wieder als neue html abspeichern!
code:
import java.io.*;
public class Utility0 {
private static boolean dateiendeErreicht = false;
private static String verzeichnis = "D:\\INF\\";
// Eingabedatei
private static String eDatei;
private static String eDateiMitPfad = verzeichnis + eDatei;
private static File eingabeDatei;
private static FileReader dateiLeser;
private static BufferedReader eingabe;
// Ausgabedatei
private static String aDatei = "ergebnis.htm";
private static String aDateiMitPfad = verzeichnis + aDatei;
private static File ausgabeDatei;
private static FileWriter dateiSchreiber;
private static PrintWriter ausgabe;
// Variable für das Lesen und Schreiben
private static String stringS = "";
private static String zeile = "";
public static void main (String[] args) {
// Öffnen der Ausgabedatei
try {
ausgabeDatei = new File (aDateiMitPfad);
dateiSchreiber = new FileWriter (ausgabeDatei);
ausgabe = new PrintWriter (dateiSchreiber);
// Eingabedatei 1 komplett ausgeben
eDatei = "anfang.txt";
eDateiMitPfad = verzeichnis + eDatei;
eingabeDatei = new File (eDateiMitPfad);
kompletteDateiAusgeben (ausgabe, eingabeDatei);
// Öffnen der Eingabedatei 2 zum Lesen und Verarbeiten
dateiendeErreicht = false;
eDatei = "robinwelt.txt";
eDateiMitPfad = verzeichnis + eDatei;
try {
eingabeDatei = new File (eDateiMitPfad);
dateiLeser = new FileReader (eingabeDatei);
eingabe = new BufferedReader (dateiLeser);
// Zeilen lesen und verarbeiten. Falls es mehrere Zeilen wären, ginge es so:
// while (!dateiendeErreicht) {
// stringS = textzeileLesen (eingabe);
// if (dateiendeGelesen(stringS)) {
// dateiendeErreicht = true;
// }
// else {
// // Die Zeile verarbeiten
// stringSVerarbeiten (ausgabe, stringS);
// }
// }
// Bei eurer Aufgabe muss nur eine Zeile gelesen und verarbeitet werden:
stringS = textzeileLesen (eingabe);
try {
stringSVerarbeiten (ausgabe, stringS);
}
catch (ArrayIndexOutOfBoundsException e) {
System.out.println ("Fehler - Versuch, mit ungültigem Index auf ein Array zuzugreifen");
}
catch (Exception e) {
System.out.println ("Laufzeitfehler in der Verarbeitung");
}
dateiendeErreicht = true;
// Dateiende erreicht, Eingabe schließen
try {
eingabe.close();
}
catch (Exception e) {
System.out.println ("Fehler beim Schließen der Eingabedatei " + eingabeDatei.toString());
}
}
catch (Exception e) {
System.out.println ("Fehler beim Öffnen der Eingabedatei " + eingabeDatei.toString());
}
// Eingabedatei 3 komplett ausgeben
eDatei = "ende.txt";
eDateiMitPfad = verzeichnis + eDatei;
eingabeDatei = new File (eDateiMitPfad);
kompletteDateiAusgeben (ausgabe, eingabeDatei);
// Ausgabe schließen
try {
ausgabe.close();
System.out.println ("Datei " + aDateiMitPfad + " erfolgreich erstellt");
}
catch (Exception e) {
System.out.println ("Fehler beim Schließen der Ausgabedatei");
}
}
catch (Exception e) {
System.out.println ("Fehler beim Öffnen der Ausgabedatei");
}
}
private static String textzeileLesen (BufferedReader r) {
String s = "";
try {
s = r.readLine();
}
catch (Exception e) {
System.out.println ("Lesefehler!");
}
return s;
}
private static boolean dateiendeGelesen (String s) {
if (s == null) {
return true;
}
else {
return false;
}
}
private static void textzeileAusgeben (PrintWriter ausgabe, String s) {
try {
ausgabe.println (s);
}
catch (Exception e) {
System.out.println ("Schreibfehler!");
}
}
private static void kompletteDateiAusgeben (PrintWriter ausgabe, File eingabeDatei) {
dateiendeErreicht = false;
try {
dateiLeser = new FileReader (eingabeDatei);
eingabe = new BufferedReader (dateiLeser);
// Zeilen lesen und ausgeben
while (!dateiendeErreicht) {
zeile = textzeileLesen (eingabe);
// Die Zeile ausgeben
if (dateiendeGelesen(zeile)) {
dateiendeErreicht = true;
}
else {
textzeileAusgeben (ausgabe, zeile);
}
}
// Dateiende erreicht, Eingabe schließen
try {
eingabe.close();
}
catch (Exception e) {
System.out.println ("Fehler beim Schließen der Eingabedatei " + eingabeDatei.toString());
}
}
catch (Exception e) {
System.out.println ("Fehler beim Öffnen der Eingabedatei " + eingabeDatei.toString());
}
}
private static String sKopie;
private static void stringSVerarbeiten (PrintWriter ausgabe, String s)
/*
// Dieses Unterprogramm hat die Aufgabe, den String-Parameter s
// in die oben beschriebene Ausgabe umzuwandeln.
// Der String s enthält die gesamte Robinwelt.
// Es müssen also insgesamt 8 * 24 = 192 Zeilen ausgegeben werden!
// Die Robinwelt hat 8 * 20 = 160 Kästchen. Der String s enthält
// 2 * 160 = 320 Angaben (je Kästchen zwei): 1. für die anzuzeigenden
// Symbole, wobei eine fehlende Angabe "weiss.jpg" bedeutet,
// und 2. für die bei "alt" auszugebende Zahl, wobei eine
// fehlende Angabe "0" bedeutet. Beispiel: rot,2,mauer,,mauer,, (Das waren
// die ersten 3 Kästchen). Der String s ist zu lesen wie ein Buch:
// Zeile für Zeile von links nach rechts. Auch die letzte Angabe endet
// mit einem Komma. Folglich ist das letzte Zeichen des String s ein Komma.
//
// Es ist sinnvoll, erst einmal eine Lösungsidee zu entwerfen.
// Der Einsatz von Arrays ist nützlich.
// Eure Lösungsidee beschreibt idealerweise weitere, von euch entworfene
// Unterprogramme und eine kurze Beschreibung ihrer Verwendung.
// Außerdem wäre es gut, den Beginn eines neuen inhaltlichen Abschnitts
// in diesem Unterprogramm hier (das für euch den Einstiegspunkt darstellt)
// und in jedem von euch neu entworfenen Unterprogramm durch Kommentare
// kennlich zu machen.
// Die Ausgabe einer Zeile in die Datei ergebnis.htm erreicht ihr durch
// folgenden Unterprogrammaufruf:
// textzeileAusgeben (ausgabe, auszugebenderString);
// Dabei ist ausgabe eine Instanz der Klasse PrintWriter, die euch bereits
// fertig zur Verfügung steht (siehe Parameterliste) - ihr könnt sie einfach
// benutzen, sie gibt in die Datei ergebnis.htm aus.
// auszugebenderString steht für irgendeine Instanz vom Typ String, die ihr
// euch selbst erzeugen müsst.
//
// Und nun könnt ihr mit der Verarbeitung beginnen:
*/
{
// Wir wollen einen String ( wert ) 2x mit dem Text aus der "Robinwelt.txt" füllen! Dabei soll das erste String[0] Das Feld sein und der zweite[1]
// soll den Alt eintrag beinhalten. Danach soll er es in HTML wieder geben und beim nächsten Aufruf wieder überschreiben.
// Er soll dies solange machen wie die for schleife unter 160 bleibet.
String tut = s;
int w=0;
int e=1;
int t=0;
String a = exporter(s);
String b = exporter2(s);
String[] wert = new String [2];
wert[0] = a;
wert[1] = b;
String tanga ="<tr align=\"center\" valign=\"middle\"><td height=\"10px\" width=\"12px\" style=\"font-weight: bold; color:'#DDAA00'\">" + e + "</td>";
String tanga2="<td height=\"10px\" width=\"12px\" style=\"font-weight: bold; color:'#DDAA00'\">" + e + "</td></tr>";
for(w=0;w<=159;w++){
// Ok man , das wird jetzt etwas schwer zu erklären

! Der ganze scheiss der unten zu lesen ist bewirkt nur das am anfang und ende einer zeile eine 1,2,34... steht
if(t==0){
textzeileAusgeben(ausgabe,tanga);
}
if(t==20){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==20){
textzeileAusgeben(ausgabe,tanga);
}
if(t==40){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==40){
textzeileAusgeben(ausgabe,tanga);
}
if(t==60){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==60){
textzeileAusgeben(ausgabe,tanga);
}
if(t==80){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==80){
textzeileAusgeben(ausgabe,tanga);
}
if(t==100){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==100){
textzeileAusgeben(ausgabe,tanga);
}
if(t==120){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==120){
textzeileAusgeben(ausgabe,tanga);
}
if(t==140){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==140){
textzeileAusgeben(ausgabe,tanga);
}
if(t==160){
textzeileAusgeben(ausgabe,tanga2);
e++;
}
if(t==160){
textzeileAusgeben(ausgabe,tanga);
}
// und hier ist der spass zuende! ^^
textzeileAusgeben(ausgabe,"<td><img name=\"vonOben01VonLinks01\" src=" + wert[0] + " alt=" + wert[1] + " height=\"30px\" width=\"30px\" onClick=\"klickAufFeld(this.name);\"></td>");
t++;
}
}
// Eure Methoden
// Das macht Komma suchen , weisst du
// Nach dem ersten durchlauf muss die var i auf die position des 2, Kommas liegen!(als erstes 9 )
static int i = 0;
private static String exporter(String s) {
int indexKomma;
String ausschnitt = "";
indexKomma = s.indexOf(",");
if(indexKomma >= 0) {
ausschnitt = s.substring(i,indexKomma);
return ausschnitt;
}
return "0";
}
private static String exporter2(String s) {
int indexKomma;
String ausschnitt = "";
indexKomma = s.indexOf(",");
if(indexKomma >= 0) {
i = i + indexKomma;
indexKomma = indexKomma + 2;
ausschnitt = s.substring(i,indexKomma);
i = indexKomma;
return ausschnitt;
}
return "0";
}
private static void testmethode () {
int kaestchen = 0;
for (kaestchen = 0; kaestchen < 160; kaestchen++) {
System.out.println(kaestchen);
}
}
}