S.substring

Hzrfa

Aktives Mitglied
Hallo, ich bräuchte bei meinem Programm Hilfe. Ich versuche gerade das Alphabet zu wiederholen, aber ich weiß nicht was ich in den Klammern noch schreiben soll. Ich weiß das da modulo verwendet werden muss was aber irgendwie nicht klappt.
 

Anhänge

  • image.jpg
    image.jpg
    793,7 KB · Aufrufe: 4
Wie genau meinst du "Alphabet wiederholen"?

Von substring gibt es zwei Ueberladungen, einmal mit dem Index ab welchem der neue String beginnen soll, und einmal mit dem Index des Beginns und des Endes des neuen Strings. Also die Frage sit welchen Teil du von einem Alphabet haben willst, "C" zum Beispiel waere substring(2, 3).

Code:
Buchstabe  A B C D E F G H...
    Index 0 1 2 3 4 5 6 7...

Der Versatz ist Absicht um zu verdeutlichen wie die substring Methode funktioniert, der Beginn ist inklusive und das Ende exklusive.
 
Wie genau meinst du "Alphabet wiederholen"?

Von substring gibt es zwei Ueberladungen, einmal mit dem Index ab welchem der neue String beginnen soll, und einmal mit dem Index des Beginns und des Endes des neuen Strings. Also die Frage sit welchen Teil du von einem Alphabet haben willst, "C" zum Beispiel waere substring(2, 3).

Code:
Buchstabe  A B C D E F G H...
    Index 0 1 2 3 4 5 6 7...

Der Versatz ist Absicht um zu verdeutlichen wie die substring Methode funktioniert, der Beginn ist inklusive und das Ende exklusive.
Ich wollte ein Code welches das Alphabet wiederholt. Also das es nicht bei Z endet. Also von A-Z das es sich wiederholt.
 
Wie genau meinst du "Alphabet wiederholen"?

Von substring gibt es zwei Ueberladungen, einmal mit dem Index ab welchem der neue String beginnen soll, und einmal mit dem Index des Beginns und des Endes des neuen Strings. Also die Frage sit welchen Teil du von einem Alphabet haben willst, "C" zum Beispiel waere substring(2, 3).

Code:
Buchstabe  A B C D E F G H...
    Index 0 1 2 3 4 5 6 7...

Der Versatz ist Absicht um zu verdeutlichen wie die substring Methode funktioniert, der Beginn ist inklusive und das Ende exklusive.
Zb möchte ich den 100 Buchstaben des Alphabets nutzen
 
 
Was soll den die Schleife die ist sinnlos.
In deiner Aufgabe wurde auch gesagt du sollst Modulo benutzen dann tue das doch auch.
Aufgabe Post #12


Java:
public class Caesar {
    public static void main(String[] args) {
        String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        int verschiebenUm = 100;
        char zeichenToCode = 'C';

      

        int posInString = s.indexOf(zeichenToCode);
       int index = (verschiebenUm +posInString) % s.length();

        char codeZeichen = s.charAt(index);

        System.out.println(codeZeichen);

    }

}
Edit:
Sorry hatte einen Fehler
 
Zuletzt bearbeitet:
schleife etwa so

Java:
        int index2 = s.indexOf(zeichenToCode);
        for (int i = 0; i < verschiebenUm; i++) {
            index2++;
            if (index2 > s.length()) {
                index2 = 0;
            }
        }
        char codeZeichen2 = s.charAt(index);
        System.out.println(codeZeichen2);
 
schleife etwa so

Java:
        int index2 = s.indexOf(zeichenToCode);
        for (int i = 0; i < verschiebenUm; i++) {
            index2++;
            if (index2 > s.length()) {
                index2 = 0;
            }
        }
        char codeZeichen2 = s.charAt(index);
        System.out.println(codeZeichen2);
Ist leider nicht richtig
 

Anhänge

  • image.jpg
    image.jpg
    1,5 MB · Aufrufe: 2
Also da sehe ich zwei Dinge:
1. Dein Code passt nicht zu dem anderen Bild. Da wird ja irgend ein automatische Test genommen der dann eine Eingabe gibt. Laut Bild versucht der Test den Buchstaben A zu codieren um 2 Stellen. Dein Code wird aber immer den Buchstaben C um 2 Stallen verschieben. Hier scheint es mir also, als ob Du die Aufgabenstellung in grundlegenden Dingen nicht verstanden hast.

2. Derzeit hast Du in Deinem Code zwei mögliche Berechnungen ... Einmal per Addition + Modulo und einmal per Schleife. Nutzen für die Ausgabe tust Du aber die Schleife.
Prüfe noch einmal die Schleife - welche Indices sind gültig? Also ab welchem Index musst Du wieder bei 0 starten?
 
Java:
int index2 = s.indexOf(zeichenToCode); for (int i = 0; i < verschiebenUm; i++) { index2++; if (index2 >= s.length()) { index2 = 0; } } char codeZeichen2 = s.charAt(index2); System.out.println(codeZeichen2);
 

Zurück
Oben