Hallo Leute,
Ich habe ein Programm geschrieben, dass die Buchstaben meiner ersten Eingabe mit denen der zweiten Eingabe in allen weiteren Eingaben vertauscht.
Bsp.:
Eingabe: oki lim ikoneas sagt ok zu limes
Ausgabe: milneas sagt li zu lmmes
(die Eingabe gibt keinen Sinn aber ist hier ja egal)
Problem:
momentan wird noch
"mmlneas sagt lm zu lmmes"
ausgegeben. Also das "k" wird erst zu "i" und dann zu "m", es soll aber nur einmal ausgetauscht werden.
Außerdem darf ich weder "replace" noch character arrays verwenden.
Hier mein Code:
Ich habe ein Programm geschrieben, dass die Buchstaben meiner ersten Eingabe mit denen der zweiten Eingabe in allen weiteren Eingaben vertauscht.
Bsp.:
Eingabe: oki lim ikoneas sagt ok zu limes
Ausgabe: milneas sagt li zu lmmes
(die Eingabe gibt keinen Sinn aber ist hier ja egal)
Problem:
momentan wird noch
"mmlneas sagt lm zu lmmes"
ausgegeben. Also das "k" wird erst zu "i" und dann zu "m", es soll aber nur einmal ausgetauscht werden.
Außerdem darf ich weder "replace" noch character arrays verwenden.
Hier mein Code:
Java:
import java.lang.Object;
public class Hexe33
{
public static void main(String[]args)
{
// für alle args ab Stelle 2
for(int i = 2;i<args.length;i++)
{
String newWord = args[i];
// counter wird erhöht, damit letterChanger weis, welche Stelle von lettersToChange1/2 er betrachten soll.
for(int counter = 0;counter<args[0].length();counter++)
{
// newWord sammelt nach jedem Durchlauf von letterChanger das Ergebnis, damit es für den nächsten Durchlauf verfügbar ist.
newWord = letterChanger(newWord,args[0],args[1],counter);
// setzt counter auf die Abbruchbedingung der for-Schleife, wenn ein Austausch stattgefunden hat und verhindert so, dass doppelt getauscht wird.
if(testIfChanged(newWord,args[0],args[1],counter) == true)
{
counter = args[0].length();
}
}
System.out.print(newWord + " ");
}
}
//letterChanger ersetzt in wordToChange die Buchstaben von lettersToChange1 durch die Buchstaben von lettersToChange2
public static String letterChanger (String wordToChange, String lettersToChange1, String lettersToChange2, int counter)
{
String newWord = "";
for(int i = 0;i<wordToChange.length();i++)
{
if(wordToChange.charAt(i) == lettersToChange1.charAt(counter))
{
newWord = newWord + lettersToChange2.charAt(counter);
}
else
{
newWord = newWord + wordToChange.charAt(i);
}
}
return newWord;
}
// testIfChangeg gibt true zurück wenn ein buchstabe ausgetauscht wurde, false wenn nicht.
public static boolean testIfChanged (String wordToChange, String lettersToChange1, String lettersToChange2, int counter)
{
boolean result = false;
for(int i = 0;i<wordToChange.length();i++)
{
if(wordToChange.charAt(i) == lettersToChange1.charAt(counter))
{
result = true;
}
else
{
continue;
}
}
return result;
}
}