私は配列内のすべての文字をシフトするのではなく、5文字ごとにシフトするようにシーザーシフトプログラムを修正しようとしています。現在、文字はテキストエリアに入力され、次に配列に変換され、すべての文字はshiftAmount(Key)が何であっても(あなたが期待したように)シフトされます。 "abc" --by2 - > "cde"配列内の「n番目」の文字をシフトする方法はありますか?
(int i=0; i<ptArray.length; i+=5)
私はを試しましたが、それは見える5番目の文字(1番目を含む)ごとにシフトするだけでなく、シフトされた文字を数えて配列の他の文字を表示しません。これを達成するために私がループに加える変更はありますか?理想的には2だけシフトし、すべての第五の文字と「ABCDEFGHIJは、」私はマルチで異なる量で同時に各文字をシフトすることによって、より安全な暗号を作るしようとしている「ABCD グラム FGHI リットル」
として表示していました - 整数キー。どんな助けでも大歓迎です。
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;
ああ、これは私が試みたものです(私のポストで '='を忘れてしまった、今修正されました)が、変更されていない文字は表示されませんでした。おかげで、配列の上書きはうまくいきますが、それはまだ最初の文字から厄介なものです。 – TabulaRasa
2つの方法でアップデートを追加しました。 – heniv181
@ heniv181あなたのコードの書式を修正しましたが、将来このサイトで呪いの言葉を使用しないようにしてください。あなたはここで専門的に行動することが期待されます。 – Magisch