hallo!
ich muss für mein studium folgende aufgabe lösen:
es werden beliebig viele Zeichenketten eingelsen, wobei eine gültig eingabe aus einer "start-zeichenkette" gefolgt von "zeichenketten-paaren" besteht.
die vorkommen der zweiten zeichenkette in der ersten werden durch die dritte zeichenkette ersetzt - die dadurch erhaltene zeichenkette ist die neue erste zeichenkette die nächste zweite und dritte zeichenkette liest man wiederum ein. also schaut das ganze dann so aus:
in: hallo ll mm mm nn
out: 1 1 hanno
wobei die zwei einser davor für die jeweilige anzahl der ersetzungen in jedem schritt stehen!
ich hab das ganze so gelöst - es funktioniert aber nicht so richtig!! bitte helft mir!!
danke! gruß da*vinci
ach ja das eprog-packet muss ich verwenden
ich muss für mein studium folgende aufgabe lösen:
es werden beliebig viele Zeichenketten eingelsen, wobei eine gültig eingabe aus einer "start-zeichenkette" gefolgt von "zeichenketten-paaren" besteht.
die vorkommen der zweiten zeichenkette in der ersten werden durch die dritte zeichenkette ersetzt - die dadurch erhaltene zeichenkette ist die neue erste zeichenkette die nächste zweite und dritte zeichenkette liest man wiederum ein. also schaut das ganze dann so aus:
in: hallo ll mm mm nn
out: 1 1 hanno
wobei die zwei einser davor für die jeweilige anzahl der ersetzungen in jedem schritt stehen!
ich hab das ganze so gelöst - es funktioniert aber nicht so richtig!! bitte helft mir!!
danke! gruß da*vinci
ach ja das eprog-packet muss ich verwenden
Code:
import eprog.*;
import java.util.*;
public class Replace {
public static void main(String agrs[]) {
String zeichen1=""; //erste Zeichenkette
String zeichen2=""; //zweite Zeichenkette
String zeichen3=""; //dritte Zeichenkette
String ausgabe=""; //Zeichenkette mit Ersetzungen
int anzahl=2; //Anzahl der einzulesenden Zeichenketten
int count=0; //Anzahl der Ersetzungen (temporär)
int index=-1; //Position beim Abzählen der Ersetzungen
Vector<Integer> counter = new Vector<Integer>(); // Anzahl der Ersetzungen
try {
zeichen1 = EprogIO.readWord(); //erstes Wort wird eingelesen
if (anzahl==2) { //wenn anzahl auf 2 steht.....
zeichen2 = EprogIO.readWord(); //.... wird die zweite Zeichenkette eingelesen...
anzahl=1; //... danach wird anzahl auf 1 gestellt
}
else if (anzahl==1) { // wenn anzahl auf 1 steht ....
zeichen3 = EprogIO.readWord(); //... wird die dritte Zeichenkette eingelesen...
anzahl=2; //.... und danach anzahl auf 2 zurückgestellt um die nächsten Paare einlesen zu können
if(zeichen1.contains(zeichen2)) { //wenn die erste Zeichenkette die zweite beinhaltet...
ausgabe = zeichen1.replaceAll(zeichen2, zeichen3); //... werden die Vorkommen der zwieten Zeichenkette in der ertsen durch die dritte Zeichenkette ersetzt
}
}
index = zeichen1.indexOf(zeichen2); //abzählen der Vorkommen der zweiten Zeichenkette in der ersten
while(index >= 0) {
++count;
index += zeichen2.length();
index = zeichen1.indexOf(zeichen2, index);
}
counter.add(count); //Anzahl der Vorkommen in Vector abspeichern
index = -1; //index zurück auf -1 setzen
}
catch (EprogEOFException e) { //wenn eine Exception auftritt ...
EprogIO.println("?"); //... ein ? ausgeben
}
while (!EprogIO.isEOF()) { // solange EOF nicht erreicht wird ...
try {
if (anzahl==2) { //wenn anzahl auf 2 steht
zeichen2 = EprogIO.readWord(); //.... wird die zweite Zeichenkette eingelesen...
anzahl=1; //... danach wird anzahl auf 1 gestellt
}
else if (anzahl==1) { // wenn anzahl auf 1 steht ....
zeichen3 = EprogIO.readWord(); //... wird die dritte Zeichenkette eingelesen...
anzahl=2; //.... und danach anzahl auf 2 zurückgestellt um die nächsten Paare einlesen zu können
}
if(ausgabe.contains(zeichen2)) { //wenn die bereits ersetzte Zeichenkette die neue zweite Zeichenkette beinhaltet...
index = ausgabe.indexOf(zeichen2); //abzählen der Vorkommen der zweiten Zeichenkette in der ersten
while(index >= 0) {
++count;
index += zeichen2.length();
index = ausgabe.indexOf(zeichen2, index);
}
//countArray[x++] = count;
counter.add(count); //Anzahl der Vorkommen in Vector abspeichern
index = -1; //index zurück auf -1 setzen
ausgabe = ausgabe.replaceAll(zeichen2, zeichen3); //.... werden die Vorkommen durch die neue dritte Zeichenkette ersetzt
}
}
catch (EprogEOFException e) { //wenn eine Exception auftritt ...
EprogIO.println("?"); //... ein ? ausgeben
}
}
EprogIO.println(counter+ " " +ausgabe);
}
}