Caesar c# выводит числа вместо сдвинутых символов

Почему эта программа выводит числа вместо сдвинутых символов? Я не могу понять, что не так в этом коде и что я забыл добавить? Любые ответы приветствуются.

static void Main(string[] args) 
{  
    string key;
    string text = string.Empty;
    int int_key;

    Console.Write("Enter a key: ");
    key = Console.ReadLine();

    if(key == "2") 
    {
        Console.Write("String you want to encrypt: ");
        text = Console.ReadLine();
    }
    else 
    {
        Console.WriteLine("Please enter a valid key: ");
    }

    int_key = int.Parse(key);

    for(int i = 0; i < text.Length; i++) 
    {
        if(char.IsUpper(text[i])) 
        {
            Console.Write("Encrypted string: " + (((char)text[i] + int_key) - 65)% 26 + 65);
        }
        else 
        {
            Console.WriteLine("Encrypted string: " + (((char)text[i] + int_key) - 97)% 26 + 97);
        }
    }

    Console.ReadKey();  
}  
(char) размещен неправильно, поэтому.
Rafalon 10.08.2018 16:05
text[i] уже является char, и когда вы добавляете char и int, в результате получается int.
St. Pat 10.08.2018 16:08
0
2
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
Console.Write("Encrypted string: " + (((char)text[i] + int_key) - 65)% 26 + 65);

более вероятно, должно быть:

Console.Write("Encrypted string: " + (char)(((text[i] + int_key) - 65)% 26 + 65));
//                                         |||_________________|     |         |
//                                         ||________________________|         |
//                                         |___________________________________|

Рад, что помог, и добро пожаловать в StackOverflow. Может быть, вы могли бы прочитать Что мне делать, когда кто-то отвечает на мой вопрос? :)

Rafalon 10.08.2018 16:13

Другие вопросы по теме