Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich soll ein Programm schreiben, das mit Hilfe von StringBuffer-Methoden eine Zeichenkette korrigiert. Die vorgegebene Zeichenkette lautet: "Das isst ain follkohmen pfalscher Täschtschdring".
Mein Code sieht folgendermaßen aus:
Java:
public class ü2aufgabe7
{
public static void main(String argv[])
{
int i;
StringBuffer s1=new StringBuffer("Das isst ain follkohmen pfalscher Täschtschdring");
StringBuffer s2=new StringBuffer ("Das ist ein vollkommen falscher Teststring");
StringBuffer h= new StringBuffer("");
//StringBuffer k=new StringBuffer(" ");
// a)
for (i=0; i<=s1.length()&& i<=s2.length();i++)
{
if(s1.charAt( i)==s2.charAt( i))
{
h=h.append(s2.charAt(i));
}
else
{
h=h.append(s1.charAt( i));
}
}
System.out.println("Aufgabe a)"+h);
}
}
Allerdings gibt mein Programm folgende Fehlermeldung aus:
Code:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 42
at java.lang.StringBuffer.charAt(Unknown Source)
at ü2aufgabe7.main(ü2aufgabe7.java:15)
>das mit Hilfe von StringBuffer-Methoden eine Zeichenkette korrigiert
nach welchen Kriterien soll das geschehen?
Gemäss einem vorgegebenen String...?
Übrigens ist StringBuilder besser, wenn keine synchronization benötigt wird.
EDIT:
zu deinem EDIT:
--> i<=s1.length()
Alles in Java hat ein länge, Elemente beginnen immer bei 0.
Nun:
Die Länge ist 42. Also Elemente von 0 bis 41. Wenn du <= schreibst geht die Schleife bis und mit 42. Da hats keine Element mehr --> OutOfBounds
Man muss aber StringBuffer benutzen, wird vom Prof. so verlangt...
Ja, nach einem vorgegebenen String: "Das isst ain follkohmen pfalscher Täschtschdring"...
>das mit Hilfe von StringBuffer-Methoden eine Zeichenkette korrigiert
nach welchen Kriterien soll das geschehen?
Gemäss einem vorgegebenen String...?
Übrigens ist StringBuilder besser, wenn keine synchronization benötigt wird.
EDIT:
zu deinem EDIT:
--> i<=s1.length()
Alles in Java hat ein länge, Elemente beginnen immer bei 0.
Nun:
Die Länge ist 42. Also Elemente von 0 bis 41. Wenn du <= schreibst geht die Schleife bis und mit 42. Da hats keine Element mehr --> OutOfBounds
public class XXX {
public static void main(String argv[]) {
StringBuffer error = new StringBuffer("Das isst ain follkohmen pfalscher Täschtschdring");
StringBuffer ok = new StringBuffer("Das ist ein vollkommen falscher Teststring");
// ansatz (lächerlich)
for (int i = 0; i < ok.length(); i++) {
if (i < error.length()) {
if (ok.charAt(i) != error.charAt(i)) {
error.replace(i, i, "" + ok.charAt(i));
}
} else {
error.append(ok.charAt(i));
}
}
if (error.length() > ok.length()) {
error.replace(ok.length(), error.length(), "");
}
System.out.println("Aufgabe a) " + error.toString());
error = new StringBuffer("Das isst ain follkohmen pfalscher Täschtschdring");
//schneller Ansatz:
error = new StringBuffer(ok);
System.out.println("Aufgabe a) " + error.toString());
error = new StringBuffer("Das isst ain follkohmen pfalscher Täschtschdring");
// auch ein ANsatz
if (error.length() > ok.length()) {
error.replace(ok.length(), error.length(), "");
}
for(int i = 0 ; i < ok.length(); i++) {
error.setCharAt(i, ok.charAt(i));
}
System.out.println("Aufgabe a) " + error.toString());
}
}