为什么我的每个打印2个字符
本文关键字:2个 字符 打印 我的 为什么 | 更新日期: 2023-09-27 18:03:59
我正在尝试创建一个用于教育的加密(ceasar),由于某种原因,我似乎无法理解为什么我的简单代码(到目前为止)会造成这样的混乱
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();
}
}
如果我在"写你的消息"之后写测试,然后把它放在我的string word
中,并在我的函数encrypt
中使用它,它应该输出
t
e
s
t
但是不管什么原因,我得到这样的输出
t
es
t
我不明白为什么
您可能想要使用Console.WriteLine(otherword);
。输出中换行符的间距取决于您在Console.Read();
行之后按哪个键。(例如,如果您按下[Enter]
,那么您将得到一个换行符,但如果您按下A
,则不会。)
您可能还应该使用Console.ReadKey(true);
而不是Console.Read();
作为分隔输出的方法,因为这将使您按下的键不会显示出来。
您需要在encrypt
函数中将Console.Read()
更改为Console.ReadLine()
。Console.Read()
只从输入流中读取下一个字符。由于按enter键生成两个字符:'r'n
,因此它循环两次。
在加密方法中-更改控制台。写入控制台。WriteLine并将Console.Read()移出foreach.
static void encrypt(string message, int key)
{
foreach (char otherword in message)
{
Console.WriteLine(otherword);
}
Console.Read();
}
使用Console.ReadLine()
代替Console.Read()
-或者(甚至更好)完全消除行读取并使用Console.WriteLine(otherword)
。Read()
会干扰下一行的格式