C# String und Int?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

annamiii374 
Fragesteller
 06.11.2018, 10:11

genau, ich gebe in der console entweder Zahl oder Wort ein. Und das was ich eingegeben habe muss dann angezeigt werden

0

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();
annamiii374 
Fragesteller
 06.11.2018, 10:10

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 :(

0
Gaterde  06.11.2018, 10:11
@annamiii374

Achso, du möchtest herausfinden, ob der eingegebene String eine Zahl oder ein Wort ist?

1
Gaterde  06.11.2018, 10:15
@annamiii374

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();
1
Gaterde  06.11.2018, 12:57
@annamiii374

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

Zuerst in einen String einlesen, dann mit Int32. TryParse prüfen, ob der sich als Zahl interpretieren lässt oder nicht.

Woher ich das weiß:eigene Erfahrung
annamiii374 
Fragesteller
 06.11.2018, 10:07

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

      }

0
DebugMyMind  06.11.2018, 10:27
@annamiii374
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);
      }
1