3

重複の可能性:
JavaのROT-13関数?

文字列からすべての文字をアルファベットの13桁シフトする必要があります

private static String encode(String line) {
    char[] toEncode = line.toCharArray();
    for (int i = 0; i < toEncode.length; i++) {
        if (Character.isLetter(toEncode[i])) {
            toEncode[i] += 13;
        }
    }
    line = String.valueOf(toEncode);
    return line;
}

問題は、たとえば「z」が?に到達することです。どうすればそれを解決できますか?

ヘルプのためのThx。

4

3 に答える 3

5

これは、「z」の次の文字が句読点などであるためです。たとえば、「z」が「n」になるようにシフトできます。

toEncode[i] = (toEncode[i] + 13 - (int)'a') % 26 + (int)'a';
于 2012-04-05T06:58:45.607 に答える
0
System.out.println(('z'+ (char)13)); //output -135
System.out.println((char)('z'+ (char)13)); //output - ?
于 2012-04-05T06:51:23.880 に答える
0

計算された文字が最後の文字より大きい場合 (z => 122 または Z => 90)、計算された値から最後の文字の値を差し引くだけです。これらの番号は、たとえばここなど、インターネット全体で見つかります。

于 2012-04-05T06:53:09.050 に答える