Have you read the documentation?
Метод Read
блокирует его возврат при вводе символов ввода; завершается, когда вы нажимаете клавишу Enter. Нажатие Enter добавляет к вашему входу последовательность завершения строки, зависящую от платформы (например, Windows добавляет последовательность возврата строки каретки). Последующие обращения к методу чтения . Извлеките свой ввод по одному символу за раз. После того, как будет получен символ , Read считывает его возврат снова и цикл повторяется.
Обратите внимание, что вы не получите значение свойства -1, если вы не выполните одно из следующих действий : одновременно нажать клавишу клавишу модификатор управления и Z консоли (Ctrl + Z), который сигнализирует конец-of состояние файла; нажмите эквивалентный ключ , который сигнализирует состояние конца файла, например функциональную клавишу F6 в Windows; или перенаправить входной поток на источник, такой как текстовый файл, который имеет фактический символ конца файла .
Метод ReadLine
или KeyAvailable
свойства и метод ReadKey
являются предпочтительно с использованием метода Read.
Если я выполняю этот код:
Console.Write("? ") ;
int input = Console.Read() ;
Console.WriteLine("You entered {0}.", input) ;
Console.WriteLine("{0} is the decimal code point for the character whose glyph is '{1}.'" , input , (char)input) ;
И, если я, на ?
строке введите символы 123
с последующим ключом return
:
? 123<return>
Увидимся этот выход:
You entered 49.
49 is the decimal code point for the character whose glyph is '1'.
[Обратите внимание, что в Windows, вы можете сгенерировать «1» в командной строке, удерживая нажатой <ALT>
ключ, набрав «0049 and releasing the
` ключ.]
Предполагая, что намерение состоит в том, чтобы пользователь, чтобы указать ряд значений, которые будут введены и затем подтолкнуть их к тому, что многие входные значения, вы хотите код, который выглядит примерно так:
static void Main()
{
int n = ReadIntegerFromConsole("How many values do you want to enter?") ;
int[] values = new int[n] ;
for (int i = 0 ; i < values.Length ; ++i)
{
string prompt = string.Format("{0}/{1}?" , i , n) ;
values[i] = ReadIntegerFromConsole(prompt) ;
}
Console.WriteLine("You entered: {0}" , string.Join(", ",values)) ;
return ;
}
static int ReadIntegerFromConsole(string prompt)
{
int value ;
bool isValid ;
do
{
Console.Write(prompt) ;
Console.Write(' ');
string text = Console.ReadLine() ;
isValid = int.TryParse(text, out value) ;
prompt = "That's not an integer. Try again:" ;
} while (!isValid) ;
return value ;
}
Используйте 'Console.ReadLine()' вместо 'Console.Read()' , – MarcinJuraszek
@MarcinJuraszek вы должны запустить код до спекуляции ... – Bogdan
@Bogdan Что заставляет вас думать, что я этого не сделал? – MarcinJuraszek