Hi Leute, wir sollten als Hausaufgabe einen Programmablaufplan interpretieren und den Code dazu erstellen. Ich weiß nicht, wie ich Screenshots hochladen kann, deshalb werde ich lediglich meine Interpretation schildern (vllt kann mir das zusätzlich jemand erklären)😖
Also, gegeben ist das Alphabet in Großbuchstaben (A-Z), dies wurde bereits in einer anderen, von uns Schülern uneinsehbaren Klasse abgespeichert und greift bereits selbständig auf unseren Teil des Programms zu.
Wir sollen in einer neuen Klasse eine Methode schreiben, die zwei Parameter besitzt (String e , int n (die Parameter stammen aus dem Code meines Lehrers und werden immer automatisch zugewiesen ). In der Methode soll ein Variable k mit dem Wert 1 initialisiert werden. Entspricht k der Länge von e, so soll eine neue Variable a mit dem Buchstaben der k-ten stelle von e initialisiert werden (entspricht k nicht der länge von e wird nur der String e ausgegeben und die Methode endet).
Nun soll überprüft werden, ob a auch tatsächlich ein Buchstabe (Element des Alphabetes) ist. Ist das korrekt, wird eine neue Variable i initialisiert, welche den Wert der a-ten Stelle im Alphabet bekommt (z.b. A=1) + n. Diese stelle bekommt nun den Buchstabe z zugeschrieben. Z wird e angehängt, k wird um 1 erhöht und der Vorgang wiederholt sich .
War a kein Buchstabe des Alphabets, so ist a = z. Z wird e angehängt, k wird um 1 erhöht und der Vorgang wiederholt sich .
Mein Problem liegt nicht darin, nicht zu wissen wie der Code auszusehen hat, dafür hab ich ja eine genau Beschreibung durch meine Interpretation (falls diese überhaupt richtig ist), sondern ich habe noch ziemliche Probleme herauszufinden, welche Werkzeuge (Schleifen, kleinere Methoden) ich brauche und wie ich diese syntaktisch richtig verwende, um den Code tatsächlich so umzusetzen, wie ich ihn im Kopf habe, dafür fehlt mir noch mehr Übung. Dennoch habe ich schomal versucht selbst etwas zu erstellen
Nochmal zur genaueren Erklärung meines Fehleres. Ich hatte mir das so vorgestellt: A entspricht ja beispielsweise nach der Ascii-tabelle 65, 65-65 = 0 +k( in diesem Fall 1) = 1 (A=1) und dann noch + Parameter n (z.B. auch 1) = 65-65+1+1 = 2. Zweite Stelle des Alphabets ist B und B wird dann mit Z ersetzt. Aber nun funktioniert meine Ascci Rechnung nicht, wenn die Buchstaben nicht chronologisch in den Parameter gesetzt werden, außerdem kann keinen keinen Buchstaben mit z ersetzen der beispielsweise an 2.Stelle des Strings steht, wenn mein String gar nicht so lang ist.
Ich weiß absolut nicht wie ich vorgehen soll.
Also um meine Frage zu konkretisieren, wie kann ich folgende Stelle "Ist das korrekt, wird eine neue Variable i initialisiert, welche den Wert der a-ten Stelle im Alphabet bekommt (z.b. A=1) + n. Diese stelle bekommt nun den Buchstabe z zugeschrieben." als Code umsetzen.
MfG
Also, gegeben ist das Alphabet in Großbuchstaben (A-Z), dies wurde bereits in einer anderen, von uns Schülern uneinsehbaren Klasse abgespeichert und greift bereits selbständig auf unseren Teil des Programms zu.
Wir sollen in einer neuen Klasse eine Methode schreiben, die zwei Parameter besitzt (String e , int n (die Parameter stammen aus dem Code meines Lehrers und werden immer automatisch zugewiesen ). In der Methode soll ein Variable k mit dem Wert 1 initialisiert werden. Entspricht k der Länge von e, so soll eine neue Variable a mit dem Buchstaben der k-ten stelle von e initialisiert werden (entspricht k nicht der länge von e wird nur der String e ausgegeben und die Methode endet).
Nun soll überprüft werden, ob a auch tatsächlich ein Buchstabe (Element des Alphabetes) ist. Ist das korrekt, wird eine neue Variable i initialisiert, welche den Wert der a-ten Stelle im Alphabet bekommt (z.b. A=1) + n. Diese stelle bekommt nun den Buchstabe z zugeschrieben. Z wird e angehängt, k wird um 1 erhöht und der Vorgang wiederholt sich .
War a kein Buchstabe des Alphabets, so ist a = z. Z wird e angehängt, k wird um 1 erhöht und der Vorgang wiederholt sich .
Mein Problem liegt nicht darin, nicht zu wissen wie der Code auszusehen hat, dafür hab ich ja eine genau Beschreibung durch meine Interpretation (falls diese überhaupt richtig ist), sondern ich habe noch ziemliche Probleme herauszufinden, welche Werkzeuge (Schleifen, kleinere Methoden) ich brauche und wie ich diese syntaktisch richtig verwende, um den Code tatsächlich so umzusetzen, wie ich ihn im Kopf habe, dafür fehlt mir noch mehr Übung. Dennoch habe ich schomal versucht selbst etwas zu erstellen
Java:
public class Algorithmus {
public String encode(String e, int n) { //Methodenkopf mit Parameter
int k = 1; //Variablen die ich verwendet habe
int length = e.length();
char a;
int ascii;
int i;
char y;
if(length != n){ //Länge wird überprüft,bei wrong = Ausgabe e
return e;
}
else //bei true, Buchstabe von e bei k-ter Stelle
a = e.charAt(k-1);
ascii = (int) a; // umschreiben in ascii, um zu überprüfen ob a = Buchstabe
if(65 <= a && a <= 90){
i= a-a + k + n; // Hier hab ich einen Fehler: ich wollte die Stelle der Buchstaben durch Ascii übermittel, was aber nicht funktioniert
// wenn die Buchstabenfolge randome ist (also nicht A-Z chronologisch)
y = charAt(i);
y = z;
e = e+y;
k++;
return e
}
else //fals a != Buchstabe, wird a zu z und an e drangehängt
a = z;
e = e+a;
k++;
return e;
}
}
Nochmal zur genaueren Erklärung meines Fehleres. Ich hatte mir das so vorgestellt: A entspricht ja beispielsweise nach der Ascii-tabelle 65, 65-65 = 0 +k( in diesem Fall 1) = 1 (A=1) und dann noch + Parameter n (z.B. auch 1) = 65-65+1+1 = 2. Zweite Stelle des Alphabets ist B und B wird dann mit Z ersetzt. Aber nun funktioniert meine Ascci Rechnung nicht, wenn die Buchstaben nicht chronologisch in den Parameter gesetzt werden, außerdem kann keinen keinen Buchstaben mit z ersetzen der beispielsweise an 2.Stelle des Strings steht, wenn mein String gar nicht so lang ist.
Ich weiß absolut nicht wie ich vorgehen soll.
Also um meine Frage zu konkretisieren, wie kann ich folgende Stelle "Ist das korrekt, wird eine neue Variable i initialisiert, welche den Wert der a-ten Stelle im Alphabet bekommt (z.b. A=1) + n. Diese stelle bekommt nun den Buchstabe z zugeschrieben." als Code umsetzen.
MfG