我该如何修复这个加密程序?
How do I fix this encrypting program?
我有一个用 C# 编写的加密程序,我正在为 class 做,只是需要一些帮助。
每当它加密应该变成 'Z' 的东西时,它就会变成“@”。我不确定为什么会这样。
有人可以帮忙吗?
char key;
int shift = 0;
string clearText = string.Empty;
Console.WriteLine("Please input your encryption key in uppercase:");
key = Convert.ToChar(Console.ReadLine());
shift = key - 'A';
// Console.WriteLine("shift = {0}", shift);
Console.WriteLine("Please input your string in uppercase letters:");
clearText = Console.ReadLine();
foreach (char ch in clearText)
{
if (Char.IsUpper(ch))
{
if (Convert.ToChar(ch + shift) < 'Z')
Console.Write(Convert.ToChar(ch + shift));
else Console.Write(Convert.ToChar(ch + shift - 26));
}
else if (ch == ' ')
Console.Write(' ');
您检查了最多 'Z' 个字符,但不包括 Z。
if (Convert.ToChar(ch + shift) < 'Z') // Change this line ...
if (Convert.ToChar(ch + shift) <= 'Z') // ... to this.
我有一个用 C# 编写的加密程序,我正在为 class 做,只是需要一些帮助。
每当它加密应该变成 'Z' 的东西时,它就会变成“@”。我不确定为什么会这样。
有人可以帮忙吗?
char key;
int shift = 0;
string clearText = string.Empty;
Console.WriteLine("Please input your encryption key in uppercase:");
key = Convert.ToChar(Console.ReadLine());
shift = key - 'A';
// Console.WriteLine("shift = {0}", shift);
Console.WriteLine("Please input your string in uppercase letters:");
clearText = Console.ReadLine();
foreach (char ch in clearText)
{
if (Char.IsUpper(ch))
{
if (Convert.ToChar(ch + shift) < 'Z')
Console.Write(Convert.ToChar(ch + shift));
else Console.Write(Convert.ToChar(ch + shift - 26));
}
else if (ch == ' ')
Console.Write(' ');
您检查了最多 'Z' 个字符,但不包括 Z。
if (Convert.ToChar(ch + shift) < 'Z') // Change this line ...
if (Convert.ToChar(ch + shift) <= 'Z') // ... to this.