Переход от Z к A в программе шифрования - PullRequest
1 голос
/ 15 апреля 2011

Я пишу зашифрованную программу на Java, в которой мне нужно изменить входную строку на определенное значение. У меня проблема, когда я добираюсь до Z и мне нужно изменить его на A, а не на следующий символ в коде ASCII. Как бы я сменил его с Z на A? Я знаю, что мне также необходимо изменить значение, которым оно шифруется, но я рисую пробел о том, как изменить Z на A в ASCII.

Ответы [ 4 ]

5 голосов
/ 15 апреля 2011

Предполагая, что вы хотите сдвинуть все буквы на n:

((letter - 'A' + n) % 26) + 'A'

И декодировать:

((letter - 'A' + 26 - n) % 26) + 'A'
2 голосов
/ 15 апреля 2011

Не знаю, почему вы используете ASCII.Просто используйте char

char ch = ...
if (ch >= 'A' && ch < 'Z') ch++;
else if (ch == 'Z') ch = 'A';
else if (ch >= 'a' && ch < 'z') ch++;
else if (ch == 'z') ch = 'z';
0 голосов
/ 15 апреля 2011

Дайте мне знать, если это поможет:

public String encode(String str) {
      String res = new String();
      for (char c : str) {
           if (Character.isUpperCase(c))
               (c == 'Z') ? res.append('A') : res.append(c+1);
           else throw new Exception(c + " is not a A-Z character");
      }
      return res;
}
0 голосов
/ 15 апреля 2011

Как указано sverre :

    String s = "AGJAJAJMLVJHNJAFVZVZJADFYAQ";
    StringBuffer e = new StringBuffer();
    char[] cs = s.toCharArray();
    for (int i = 0; i < cs.length; i++) {
        e.append((char)('A' + (cs[i] - 'A' + 1) % 26));
    }
    System.out.println(s);
    System.out.println(e.toString());
...