2017-02-21 12 views
2

Ich bin von Python zu C# wechseln und ich habe Probleme mit der ReadLine() Funktion. Wenn ich einen Benutzer zur Eingabe Python fragen, will ich es so:Wie frage ich den Benutzer für Eingabe in C#

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

In C# wird daraus:

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

Aber wenn ich diesen Typen bekomme ich einen Fehler:

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

Wie kann ich den Benutzer bitten, etwas in C# einzugeben?

+0

Was ist der Fehler? – A3006

+0

Sie müssen zuerst 'Console.WriteLine()' und dann 'Console.ReadLine()' – Pikoh

+0

'Console.Write (" Geben Sie eine beliebige Nummer ein: ");' oder 'Console.WriteLine', dann können Sie die Leseleitung – pinkfloydx33

Antwort

3

Sie sollten dies ändern:

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

dazu:

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

Aber wenn Sie einige Buchstaben (oder ein anderes Symbol, das nicht zu int analysiert werden kann) eingeben und Sie werden Exception bekommen. Um zu überprüfen, ob eingegebene Wert korrekt ist:

(bessere Option):

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

One ausführen Imp Sache ... Wenn Sie nicht sicher über die Eingabe sind und es zuerst überprüfen möchten (was eine gute Idee ist) versuchen TryParse statt Parse ... – A3006

+0

@ A3006, danke, bearbeitet –

-1

versuchen, diese

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

wo Typ Datentyp ist, Sie wollen werfen Benutzereingabe zu. Ich empfehle Ihnen, einige Bücher über C# -Fundamente zu lesen, bevor Sie sich Foren zuwenden.

0

Um allgemeiner zu sein, würde ich vorschlagen, dass Sie ein zusätzliches Objekt erstellen (weil Sie statische Objekte in C# nicht erweitern können), um sich so zu verhalten, wie Sie es festgelegt haben.

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

Natürlich können Sie diesen Code nicht fehlerfrei, weil es keine Einschränkungen über den Ausgabetyp nicht enthält, aber noch wird es in einige Typen ohne Probleme werfen.

Zum Beispiel. Mit diesem Code:

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

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

Check this online

Verwandte Themen