我有一个制作凯撒密码的项目。我被困在textBox2.text中,即它没有显示加密文本。
请检查我的代码和指南,我将非常感谢!
请告诉我,如果我的代码中有其他错误,那将是非常好的。
{
key = int.Parse(textBox3.Text) - 48;
// Input.ToLower();
int size = Input.Length;
char[] value = new char[size];
char[] cipher = new char[size];
for (int i = 0; i < size; i++)
{
value[i] = Convert.ToChar(Input.Substring(i, 1));
}
for (int re = 0; re < size; re++)
{
int count = 0;
int a = Convert.ToInt32(value[re]);
for (int y = 1; y <= key; y++)
{
if (count == 0)
{
if (a == 90)
{ a = 64; }
else if (a == 122)
{ a = 96; }
cipher[re] = Convert.ToChar(a + y);
count++;
}
else
{
int b = Convert.ToInt32(cipher[re]);
if (b == 90)
{ b = 64; }
else if (b == 122)
{ b = 96; }
cipher[re] = Convert.ToChar(b + 1);
}
}
}
string ciphertext = "";
for (int p = 0; p < size; p++)
{
ciphertext = ciphertext + cipher[p].ToString();
}
ciphertext.ToUpper();
textBox2.Text = ciphertext;
}
答案 0 :(得分:2)
这非常可疑:
key = int.Parse(textBox3.Text) - 48;
48是一个神奇的数字,没有任何解释。大概你正在使用它,因为它是'0'
的ASCII代码。但是int.Parse
不会返回ASCII代码。
您可以使用(仅)int.Parse
,或者获取文本框中第一个字符的ASCII码并对字符代码进行算术运算。但结合这些是不正确的。
key = int.Parse(textBox3.Text);
或
key = textBox3[0] - '0';
由于您当前的代码将key
设置为负数,因此内部for( y = 1; y <= key; y++ )
循环立即退出(零次迭代)。