我想写一个Ceaser cypher(de)编码器,但我仍然坚持使用标点符号。 我使用char数组作为单个字母,但标点符号不会从字符串复制到数组中。
有没有选择以我试图在这里使用的方式进行操作?
static char[] alphabet = new char[]{ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
for (int i = 0; i< toEncrypt.Length; i++)
{
for (int j = 0; j < alphabet.Length; j++ )
{
if (toEncrypt[i] == alphabet [j])
{
encrypted[i] = alphabet [(j + c) % 25];
}
}
}
感谢您的时间并抱歉这个愚蠢的问题:)
答案 0 :(得分:3)
您需要在循环前指定encrypted[i] = toEncrypt[i];
static char[] alphabet = new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
};
for (int i = 0; i< toEncrypt.Length; i++){
encrypted[i] = toEncrypt[i]; // first copy the same character, overwrite later if character is in alphabet
for (int j = 0; j < alphabet.Length; j++ ){
if (toEncrypt[i] == alphabet [j]) {
encrypted[i] = alphabet [(j + c)%25];
}
}
}