回転(rotation) による暗号化(encryption), 復号化(decryption) のコードを作っています。
文字列中の文字を一つずつ呼び出す暗号化、復号化のコードは作れたのですが、文字の回転を行うletter operatorのメソッドがうまく機能していません。
文字はアルファベットのみ、大文字小文字を識別して回転したいのですが、下記の間違いがあればご指摘いただけますでしょうか?
letterOperator、rotation = -58でHelloを暗号化しようとすると、ByffiになるはずがB_ffiとなってしまいます。アルファベットの終わりの数文字(v辺りから)になるところの回転がうまくいきません。
private static char letterOperator(char ch, int rotation) {
if (Character.isUpperCase(ch)) { if ((rotation % 26) + ch > 90) { return (char) ((rotation % 26) + ch - 26); } else { return (char) ((rotation % 26) + ch); } } else if (Character.isLowerCase(ch)) { if ((rotation % 26) + ch > 122) { return (char) ((rotation % 26) + ch - 26); } else { return (char) ((rotation % 26) + ch ); } } else { return ch; }
お力を貸していただけると助かります。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー