2016-10-29 2 views
1

ここに私のコードは基本的な '使用'と名前空間なし、static void main文字列の行(十分にコピーできませんでした)です。最初のConsole.Read();私の名前を入力することができ、それは良い書き込みが得られますが、2番目のConsole.Read();無視されています。それはちょうど "私は大丈夫だよ"と書いています。私は最初の後に何も書けません。 Console.ReadKey();第2のConsole.Read();無視されています

助けてください?

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

あなたの名前はどのように書いていますか?あなたの名前をどうやって取得していますか? –

答えて

1

Console.ReadLine()を代わりに使用してください。私の答えは、私はこれが起こった理由のためにサリフH.推論を指摘したいん選ばれたので

 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(); 

は正しいです。 Console.Readはストリームから1文字だけを読み込みます。より多くの文字が入力された場合、ストリームにはより多くのデータが存在するため、次にConsole.Read()が呼び出されると、前の入力からストリームの次の文字が読み込まれます。

0

私はこれをテストしたところ、あなたが見ているのと同じ機能が表示されています。なぜ私は戻ってきた直後にそれが出ているのか分からない。 Console.ReadLine()は、あなたのコードが動作すると期待していたように機能します。

Console.Read()への2回目の呼び出しがすぐに終了する理由は、this文書に記載されていると思います。

その後、Readメソッドを呼び出すと、一度に1文字ずつ入力が取得されます。最後の文字が取得されると、Readはその復帰を再びブロックし、サイクルが繰り返されます。

2

Readメソッドは、入力文字の入力中にその戻り値をブロックします。 Enterキーを押すと終了します。

Console.Read()Console.ReadLine()の主な違いはConsole.Read()は、配列のみから1つの文字がかかりますし、あなたがこのような何かを行う場合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)+";"); 

あなたは」あなたが1つの文字だけを持っていることに気づき、より多くの文字を入力したので、2番目のConsole.Read()はシーケンスから次の文字を取り、入力から2番目の文字を返すので、Console.ReadLine()を使うべきです。

+0

これがこれが起こっている理由です。 – WBuck

関連する問題