我目前正在做一个程序,我必须加密用户输入的字符串。 我可以随机化字母并让a = c(随机生成的字母)等等......但我似乎无法做的一件事就是用户给出的字符串中是否有空格。 因此,如果用户键入"加密此字符串" ,我会得到一个错误。 如何将空格字符放入数组中,以便在输入时更改它?
char [] arrayAlphabet;
arrayAlphabet = new char [26];
for (int i=0; i<26; i++)
{
arrayAlphabet[i] = (char)('a' + i);
}
public static char [] createCipher(char [] arrayAlphabet, char [] cipherAlphabet)
{
List<Character> chars = new ArrayList<>(26);
for (char c = 'a'; c <= 'z'; c++)
{
chars.add(c);
}
Collections.shuffle(chars);
for (int i = 0; i<26; i++)
{
cipherAlphabet[i] = chars.get(i);
}
return cipherAlphabet;
谢谢,任何帮助表示赞赏。
答案 0 :(得分:2)
为什么不使用c = 'a'
&#39; s c <= 'z'
而不是for String
和toCharArray()
for for循环:
public static char[] createCipher() { // You weren't using your parameters, so I removed them. You can add them back if you want
char[] chars = "abcdefghijklmnpoqrstuvwxyz ".toCharArray(); // Add more characters to this string if you need them
return shuffleArray(chars);
}
public static char[] shuffleArray(char[] array) {
Random rnd = new Random();
for (int i = array.length - 1; i > 0; i--) {
int index = rnd.nextInt(i + 1);
char temp = array[index];
array[index] = array[i];
array[i] = temp;
}
return array;
}
(您还需要导入java.util.Random
才能使其正常工作)
"...".toCharArray()
所做的是带有你想要的字符的字符串,并将它们变成char
数组;)。 shuffleArray()
是char[]
专门用于char[]
的一般实现,可能比将List<Character>
转换为{{1}}并再返回更快。 (从Fisher-Yates shuffle实施)
(请注意,字符交换 不 一般来说是一个很好的加密,如果你真的想要保护一些信息。虽然这是一个很好的练习。)