0

私が ROT13 のような暗号化方法を作成しているクラス プロジェクトでは、私たちの唯一の違いは、13 番目の文字ではなく、9 番目の文字であることです。驚いたことに、小文字で機能するものを作成して、私の方法が機能するかどうかを確認することができました.

それは機能しますが、何らかの理由で、奇妙な文字が表示されます。より一般的には疑問符が表示され、元の文字配列にない余分な文字が表示されることもあります。

例: 私の名前はljb|nh?. 少なくとも私の知る限り、そこにあるべきではありません|?

私のコードを見て、なぜこれが起こっているのか誰か教えてもらえますか?

public class Encrypt {
    public static void main(String[] args) {
        // Lower a-z: 97-122; Higher A-Z: 65-90
        jumble("casey");
    }
    public static void jumble(String input) {
        char[] phraseChar = input.toCharArray();
        // StringBuilder output = new StringBuilder("");

        for (int i = 0; i < phraseChar.length; i++) {
            System.out.print("" + phraseChar[i]);
        }

        System.out.println();

        for (int j = 0; j < phraseChar.length; j++) {
                int i = (int) phraseChar[j];
                if (i >= 'a' && i <= 'z') {
                    i += 9;
                    if (i > 'z') {
                        int newChar = 96 + (i - 'z');
                        System.out.print((char) newChar);
                    }
                    System.out.print((char) i);
            }
        }
    }
}

この問題を特定するのを手伝ってくれる人は誰でも聖人です。

4

1 に答える 1

2
if (i >= 'a' && i <= 'z') { 
   i += 9; 
   if (i > 'z') { 
       int newChar = 96 + (i - 'z'); 
       System.out.print((char) newChar); 
   } 
   System.out.print((char) i);
 }

範囲外の場合i、「修正された」文字と元の範囲外の文字の両方を印刷しています。置くelse

私は聖人ではありません。これらにはデバッガを使用してください。その知識は将来役に立ちます。

于 2012-09-05T20:12:42.477 に答える