2016-10-29 2 views
1

여기에 기본 '사용'및 네임 스페이스가없는 코드 인 static void main 문자열 줄 (충분하게 복사 할 수 없음)이 있습니다. 첫 번째 Console.Read(); 괜찮아요, 내 이름을 입력 할 수 있고 잘 썼지 만 두 번째 Console.Read(); 무시되고 있습니다. 그냥 "나는 괜찮아. 너는 .."라고 쓰고 난 후에도 처음에는 아무 것도 쓸 수 없다. 과 Console.ReadKey();두 번째 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()을 사용해보십시오.

 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()가 호출되면 이전 입력에서 스트림의 다음 문자를 읽습니다.

0

방금 ​​테스트 한 결과보고있는 것과 동일한 기능이 표시됩니다. 나는 왜 그것이 반환을 누른 직후에 나오고 있는지 확실하지 않다. Console.ReadLine()은 코드가 작동 할 것으로 기대했던 방식으로 작동합니다.

Console.Read()에 대한 두 번째 호출이 즉시 종료되는 이유는 this 설명서에 설명되어 있다고 생각합니다.

이후의 Read 메서드 호출은 한 번에 한 문자 씩 읽습니다. 마지막 문자가 검색된 후 Read는 반환을 다시 차단하고주기가 반복됩니다.

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()은 시퀀스에서 다음 문자를 취하여 입력에서 두 번째 문자를 반환하므로 Console.ReadLine()을 사용해야합니다.

+0

이것이 이것이 발생하는 이유입니다. – WBuck

관련 문제