C# String und Int?
Hallo, ich muss eine eingabe machen.
Egal ob ich eine Zahl oder Wort eingebe soll das in der Console Ausgegeben werden ohne dass ich dem Programm davor sage ob es ein int oder string ist.
also int Zahl;
string Wort;
string eingabe;
eingabe = Console.ReadLine();
und weiter komme ich leider nicht, da ich nicht wieklich weiß was ich machen soll um beide werte entegen nehmen zu können. help :)
5 Antworten
Dein Ziel ist es, herauszufinden, ob die Eingabe eine Zahl oder ein String ist. Wenn du nun Console.ReadLine() benutzt, bekommst du immer einen String und du möchtest nun herausfinden, ob das, was in dem String steht, eine Zahl ist zum Beispiel "1234".
In C# gibt es dafür die Funktion Int32.TryParse. Auf der verlinkten Seite findest du Beispiele dazu. Diese Funktion gibt einen boolschen Wert zurück, also true oder false, der dir sagt, ob die Funktion den übergebenen String, hier idealerweise deine Eingabe in der Konsole, die du mit Console.ReadLine() bekommst, erfolgreich zu einer Zahl parsen konnte. Bei "1234" gibt die Funktion true, bei "123keineZahl" false zurück.
Mit einem IF-Statement kannst du dann ganz einfach zwischen der folgenden Ausgabe auf der Konsole unterscheiden, eine kurze Version wie folgt als Pseudo-Code:
int zahl;
string eingabe = Console.ReadLine();
if(Int32.TryParse(eingabe, out zahl))
{
Console.WriteLine(zahl);
}
else
{
Console.WriteLine(eingabe);
}
Verstehe ich das richtig, dass du einen Wert in die Konsole eingeben möchtest und anschließend die Entscheidung fällen musst, ob es sich bei dem Wert um String- bzw. Integer Datentyp handelt?
Wenn ja, dann kannst du wie sebstianla bereits sagte mit "TryParse" prüfen ob die Eingabe String/Integer ist.
genau, ich gebe in der console entweder Zahl oder Wort ein. Und das was ich eingegeben habe muss dann angezeigt werden
Du kannst eine Zahl in einem String speichern. Nicht aber einen Buchstaben in einem Int. Wenn du nichts anderes mit der Eingabe machen musst, als sie direkt wieder auszugeben, kannst du es direkt in eine String Variable speichern und ausgeben:
string eingabe;
eingabe = Console.ReadLine();
Console.WriteLine(eingabe);
Console.ReadKey();
Achso, du möchtest herausfinden, ob der eingegebene String eine Zahl oder ein Wort ist?
Versuche es so:
int n;
string eingabe;
eingabe = Console.ReadLine();
if (int.TryParse(eingabe, out n))
{
Console.WriteLine("Eingabe ist eine Zahl");
}
else
{
Console.WriteLine("Eingabe ist ein String");
}
Console.ReadKey();
Wenn es auch mit grösseren Zahlen un Komma Zahlen funktionieren soll:
float n;
string eingabe;
eingabe = Console.ReadLine();
if (float.TryParse(eingabe, out n))
{
Console.WriteLine("Eingabe ist eine Zahl");
}
else
{
Console.WriteLine("Eingabe ist ein String");
}
Console.ReadKey();
Zuerst in einen String einlesen, dann mit Int32. TryParse prüfen, ob der sich als Zahl interpretieren lässt oder nicht.
static void Main(string[] args)
{
int zahl = Int32.Parse("");
string wort = "";
string eingabe;
eingabe = Console.ReadLine();
if(eingabe == wort)
{
Console.WriteLine(wort);
}else
{
Console.WriteLine(zahl);
}
static void Main(string[] args)
{
int zahl = 0;
string eingabe = "";
eingabe = Console.ReadLine();
if(int.TryParse(eingabe, out zahl))
{
Console.WriteLine(zahl);
}
else
{
Console.WriteLine(eingabe);
}
Schau dir Generics an:
https://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx
static void Main(string[] args)
{
int zahl = Int32.Parse("");
string wort = "";
string eingabe;
eingabe = Console.ReadLine();
if(eingabe == wort)
{
Console.WriteLine(wort);
}else
{
Console.WriteLine(zahl);
}
kommt ein feher raus :(