Ich versuche, ein Caesar-Shift-Programm zu ändern, um nicht jedes Zeichen in einem Array zu verschieben, sondern jedes fünfte Zeichen zu sagen. Gegenwärtig können Zeichen in ein Textfeld eingegeben werden, das dann in ein Array konvertiert wird und jedes Zeichen um was auch immer verschoben wird, was auch immer der shiftAmount (Key) ist (wie zu erwarten ist). "abc" --by2 -> "cde".Wie verschiebt man jedes 'n-te' Zeichen in einem Array?
Ich probierte (int i=0; i<ptArray.length; i+=5)
, was dazu führt, dass jedes fünfte Zeichen (einschließlich des ersten) verschoben wird. Es scheint aber auch, dass nur diese Zeichen gezählt werden und somit keine anderen Zeichen im Array angezeigt werden. Kann ich eine Änderung an der Schleife vornehmen, um dies zu erreichen? Im Idealfall „abcdefghij“ mit jedem fünften Buchstaben verschoben von 2 würde als „ABCD g fghi l“ mit einem Multi
Ich versuche, um einen anderen Betrag gleichzeitig durch Verschieben jedes Zeichens eine sicherere Chiffre machen anzuzeigen -integer Schlüssel. Jede Hilfe würde sehr geschätzt werden.
public String shiftCipher (String p, int s) { //plaintext, shiftAmount
//convert the input/plain string to an array of characters
char[] ptArray = p.toCharArray();
//create array of characters to hold output/cipher string
char[] ctArray = new char[ptArray.length];
//shift and put result in the ciphertext array
for (int i=0; i<ptArray.length; i++) {
int ascii = (int)ptArray[i];
ascii = (ascii - 32 + s)%95 + 32;
ctArray[i] = (char)ascii;
}
//convert ciphertext array to string
String c = new String(ctArray);
return c;
Ah, das habe ich ausprobiert (vergaß das "=" in meinem Post, behoben), aber es zeigte nicht die unveränderten Zeichen. Danke, das Überschreiben des Arrays funktioniert - obwohl es immer noch vom ersten Zeichen ausgeht. – TabulaRasa
Ein Update mit den zwei Möglichkeiten hinzugefügt, die man machen kann. – heniv181
@ heniv181 Ich habe Ihre Code-Formatierung korrigiert, aber bitte verwenden Sie in Zukunft keine Schimpfwörter auf dieser Seite. Von Ihnen wird erwartet, dass Sie sich hier professionell verhalten. – Magisch