为什么我的foreach打印2个char?

Boj*_*jje -1 c# foreach output

我正在尝试为教育创建一个加密(ceasar),由于某些原因我似乎无法理解为什么我的简单代码(到目前为止)正在制造这样一个hazzle

static void Main(string[] args)
    {
        string word;
        int key = 0;
        Console.WriteLine("Write your messages");
        word = Console.ReadLine();
        Console.WriteLine("Enter your key cypher");
        key =int.Parse(Console.ReadLine());
        encrypt(word, key);
    }

    static void encrypt(string message, int key)
    {
        foreach (char otherword in message)
        {
            Console.Write(otherword);
            Console.Read();
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果我在"编写你的消息"之后编写测试,然后将它放入我的string word并在我的函数中使用它encrypt,它应该输出

t 
e
s
t
Run Code Online (Sandbox Code Playgroud)

但是无论出于什么原因,我得到这样的输出

t
es
t
Run Code Online (Sandbox Code Playgroud)

而且我不明白为什么.

Jas*_*zun 6

您可能想要使用Console.WriteLine(otherword);.输出中换行符的间距取决于您在换行后按哪个键Console.Read();.(例如,如果你按下[Enter],那么你会得到一个换行符,但是如果按下A你就不会.)

您可能也应该使用Console.ReadKey(true);而不是Console.Read();分离输出的方法,因为这将使您按下的键不显示.