这是我的代码,没有基本的'使用'和命名空间,static void main
字符串行(无法将其复制得足够好)。第一个Console.Read();工作正常,我可以输入我的名字,它写得很好,但第二个Console.Read();被忽略了。它只是写道"我很好。你会.."在第一个Console.Read();
之后和Console.ReadKey();
请帮忙吗?
Console.WriteLine("Welcome to the game. What is your name?");
Console.Write("It's ");
Console.Read();
Console.WriteLine("That sounds amazing! How old are you?");
Console.Write("I'm ");
Console.Read();
Console.WriteLine("OK. You will be taught some basic mathematics. Get ready...");
Console.WriteLine("When you're ready, press any key!");
Console.ReadKey();
Console.Clear();
答案 0 :(得分:2)
当您键入输入字符时,Read方法会阻止其返回;按Enter键时它会终止。
Console.Read()
和Console.ReadLine()
之间的主要区别在于Console.Read()
只会从序列中获取一个字符,Console.ReadLine()
将占据整行,所以在您的情况下,如果你这样做像这样的东西:
int x;
Console.WriteLine("Welcome to the game. What is your name?");
Console.Write("It's ");
x = Console.Read();
Console.WriteLine("Char: " + Convert.ToChar(x)+";");
x = Console.Read();
Console.WriteLine("Char: " + Convert.ToChar(x)+";");
你会注意到你只有一个字符,因为你输入了更多字符,你的第二个Console.Read()
将从序列中获取下一个字符并从输入中返回第二个字符,所以我想你应该使用{ {1}}。
答案 1 :(得分:1)
尝试使用Console.ReadLine()。
Console.WriteLine( "Welcome to the game. What is your name?" );
Console.Write( "It's " );
var name = Console.ReadLine( );
Console.WriteLine( $"Hello {name}, How old are you?" );
Console.Write( "I'm " );
Console.ReadLine( );
Console.WriteLine( "OK. You will be taught some basic mathematics. Get ready..." );
Console.WriteLine( "When you're ready, press any key!" );
Console.ReadKey( );
Console.Clear( );
因为我的答案被选中了,我想指出Salih H.为什么这种情况发生的原因是正确的。 Console.Read只读取流中的1个字符。如果输入了更多字符,则流中会有更多数据,因此下次调用Console.Read()时,它将从前一个输入中读取流中的下一个字符。
答案 2 :(得分:0)
我刚测试了这个,我看到了你所看到的相同功能。我不确定为什么它会在按下返回后立即退出。 Console.ReadLine()
以我期望您的代码工作的方式运行。
我相信this文档说明了对Console.Read()
的第二次调用立即终止的原因。
对Read方法的后续调用一次检索输入一个字符。检索完最后一个字符后,Read会再次阻止其返回并重复循环。