2017-02-21 20 views
2

Я переключаюсь с Python на C#, и у меня возникают проблемы с функцией ReadLine(). Если я хочу, чтобы задать пользователю для ввода Python Я сделал это так:Как запросить пользователя для ввода в C#

x = int(input("Type any number: ")) 

В C# это становится:

int x = Int32.Parse (Console.ReadLine()); 

Но если я печатаю это я получаю сообщение об ошибке:

int x = Int32.Parse (Console.ReadLine("Type any number: ")); 

Как я могу попросить пользователя ввести что-то на C#?

+0

Что такое ошибка? – A3006

+0

Вы должны сначала 'Console.WriteLine()', а затем 'Console.ReadLine()' – Pikoh

+0

'Console.Write (« Введите любое число: »);' или 'Console.WriteLine', тогда вы можете сделать строку чтения – pinkfloydx33

ответ

3

Вы должны изменить это:

int x = Int32.Parse (Console.ReadLine("Type any number: ")); 

к этому:

Console.WriteLine("Type any number: "); // or Console.Write("Type any number: "); to enter number in the same line 
int x = Int32.Parse(Console.ReadLine()); 

Но если ввести какое-то письмо (или другой символ, который не может быть разобрано на int) вы получите Exception. Для того, чтобы проверить, если введенное значение правильно:

(лучший вариант):

Console.WriteLine("Type any number: "); 
int x; 
if (int.TryParse(Console.ReadLine(), out x)) 
{ 
    //correct input 
} 
else 
{ 
    //wrong input 
} 
+0

One imp thing ... Если вы не уверены в своем вводе и хотите сначала его проверить (это хорошая идея), попробуйте TryParse вместо Parse ... – A3006

+0

@ A3006, спасибо, отредактирован –

-1

попробовать этот

Console.WriteLine("Type any number: "); 
int x = Int32.Parse (Console.ReadLine()); 
0
Console.WriteLine("Type any number"); 
string input = Console.ReadLine(); 
int x; 
if (int.TryParse(input, out x)) 
{ 
    //do your stuff here 
} 
else 
{ 
    Console.WriteLine("You didn't enter number"); 
} 
0
Console.WriteLine("Type any number: "); 
string str = Console.ReadLine(); 
Type a = Type.Parse(str); 

где Тип является тип данных вы хотите, чтобы бросить пользовательский ввод. Я предлагаю прочитать несколько книг на фундаментах C#, прежде чем обращаться к форумам.

0

Чтобы быть более общим, я предлагаю вам создать дополнительный объект (потому что вы не можете распространять статические объекты на C#), чтобы вести себя так, как вы указали.

public static class ConsoleEx 
{ 
    public static T ReadLine<T>(string message) 
    { 
     Console.WriteLine(message); 
     string input = Console.ReadLine(); 
     return (T)Convert.ChangeType(input, typeof(T)); 
    } 
} 

Конечно вы этот код не без ошибок, потому что она не содержит каких-либо ограничений относительно типа вывода, но все-таки он будет брошен в некоторых типов без каких-либо проблем.

Например. Используя этот код:

static void Main() 
{ 
    int result = ConsoleEx.ReadLine<int>("Type any number: "); 
    Console.WriteLine(result); 
} 

>>> Type any number: 
<<< 1337 
>>> 1337 

Check this online