我正在尝试为教育创建一个加密(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();
}
}
如果我在“编写邮件”之后编写测试,然后将其放入我的string word
并在我的函数encrypt
中使用它,则应输出< / p>
t
e
s
t
但无论出于什么原因,我都会得到像这样的输出
t
es
t
我不明白为什么。
答案 0 :(得分:6)
您可能想要使用Console.WriteLine(otherword);
。输出中换行符的间距取决于您在Console.Read();
行之后按下的键。 (例如,如果按[Enter]
,则会出现换行符,但如果按A
则不会。)
您可能还应该使用Console.ReadKey(true);
而不是Console.Read();
作为分隔输出的方法,因为这会使您按下的键不显示。
答案 1 :(得分:1)
您需要在Console.Read()
功能中将Console.ReadLine()
更改为encrypt
。 Console.Read()
仅从输入流中读取下一个字符。由于按下回车键会生成两个字符:\r\n
,它会循环两次。
答案 2 :(得分:1)
在encrypt方法中 - 将Console.Write更改为Console.WriteLine并将Console.Read()移到foreach之外。
setTimeout(function(){
var lastScroll = 0;
$("#__xmlview0--players-vsb-sb").scroll(function () {
var st = $(this).scrollTop();
if (st > lastScroll) {
console.log("scrolling down");
} else {
console.log("scrolling up");
}
lastScroll = st;
});
}, 700);
答案 3 :(得分:0)
使用Console.ReadLine()
代替Console.Read()
- 或者(更好)消除完全读取的行并使用Console.WriteLine(otherword)
。 Read()
会弄清楚下一行的格式化方式。