【发布时间】:2019-10-22 12:57:29
【问题描述】:
我需要在不使用ASCII table 的情况下重新设计此方法(它是 vigenere cipher 的编码器)
private static final int ALPHABET = 26;
public static final String KEY = "AB";
public String encode(String input) {
StringBuilder letters = new StringBuilder();
input = input.toUpperCase();
for (int i = 0, j = 0; i < input.length(); i++) {
char symbol = input.charAt(i);
letters.append((char) (((symbol - 65) + (KEY.charAt(j) - 65)) % ALPHABET + 65));
j = ++j % KEY.length();
}
return letters.toString().toLowerCase();
}
【问题讨论】:
-
你想要什么?你写了那个代码?它有效吗?如果没有,那怎么行不通?
-
我做到了,而且有效。但是我的老师想要它而不使用 ascii,而是使用英文字母的简单字符串(或数组),我不知道该怎么做。
-
啊,你的意思是没有
symbol - 65诡计。您可以按顺序创建一个包含所有字母的字符串,并在其上使用indexOf和charAt来做同样的事情。