Ich bin ein ziemlicher Anfänger in C# und wollte eig nur mal einen Integer Wert auf der Konsole ausgeben und zwar so:
int var =1;
Console.WriteLine("{0}",var);
Console.ReadLine();
das funktioniert auch, aber wenn ich einen int-Wert von der Konsole einlesen will, so:
int var =1;
Console.WriteLine("Bitte eine Zahl eingeben");
var = Console.Read();
Console.WriteLine("{0}",var);
Console.ReadLine();
Console.ReadLine();
dann gibt er mir nicht den eingegeben int-wert auf der Konsole aus sondern den ASCII-Wert(denke ich). Wie kann ich den eingegebenen Wert ausgeben ?
PS: Am Anfang muss ich doch var einen Wert zuweisen, da ist es dann eh egal welcher, da der Anfangswert mit der Eingabe eines neuen Wertes doch überschrieben sein sollte, oder ?
Probiers mal mit:
int zahl = Convert.ToInt32(Console.ReadLine());
Der falsche Wert entsteht wohl durch das Console.Read().
Ich habe allerdings das Gefühl, dass Convert hier nicht die beste Lösung ist. Kennt vielleicht jemand eine bessere oder ist das so in Ordnung?
Ich habe allerdings das Gefühl, dass Convert hier nicht die beste Lösung ist.
Stimmt. Was passiert, wenn jemand nur CR oder "abc" eingibt?
Kennt vielleicht jemand eine bessere oder ist das so in Ordnung?
:rtfm: **int.Parse **oder (noch besser) int.TryParse
Solche Methoden gibt es auch für double, DateTime usw. Für spezielle Eingabeformate kommen auch **ParseExact **bzw. **TryParseExact **in Frage.
Jürgen
Hallo sinso
PS: Am Anfang muss ich doch var einen Wert zuweisen, da ist es dann eh egal welcher, da der Anfangswert mit der Eingabe eines neuen Wertes doch überschrieben sein sollte, oder ?
Nein, du kannst auch nur:
int var;
schreiben und dann den Wert zuweisen, bzw. es wäre auch besser/richtig so.
Gruss Thomas
Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"
Danke für die Antworten.
Aber wie verwende ich die Methode int.TryParse in meinem Bsp.
int var = int.TryParse(Console.ReadLine());
funktioniert nicht, wie verwende ich diese Methode?
wie verwende ich diese Methode? Wie poste ich richtig? Punkt 1.1 :rtfm:
Siehe notfalls auch Schau in die Doku! - Möglichkeiten der Informationsgewinnung
Wenn Du solche Fragen hier stellst statt selbst nachzuschlagen, machst Du Dir im Forum keine Freunde. Jürgen
@juetho
Danke für den Hinweis
Ich denke so ists jetzt richtig.
string input = Console.ReadLine();
int zahl;
if (!int.TryParse(input, out zahl))
Console.WriteLine("Bitte geben sie eine Zahl ein.");
else
Console.WriteLine(zahl.ToString());
Oder mit while
int zahl;
while (!int.TryParse(Console.ReadLine(), out zahl))
Console.WriteLine("Bitte geben sie eine Zahl ein.");
Console.WriteLine(zahl + "");
Jetzt stimmts, ich würde dir aber trotzdem diese Lektüre empfehlen:
🛈
Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"
Ich habe es jetzt so gelöst, hoffe es stimmt ?!
int var;
Console.WriteLine("Bitte Zahl eingeben");
string s = Console.ReadLine();
int.TryParse(s,out var);
Console.WriteLine(var);
was machst du wenn der Benutzer keine Zahl eingibt?
Dann ist var null.
PS: Lies dir ein Openbook durch.
Gruß pdelvo
Diesmal war mein Freund pdelvo schneller.
Dann ist var null.
Seit wann kann ein int null
sein :evil:
Ich habe es jetzt so gelöst, hoffe es stimmt ?!
Es stimmt, aber so nützt die das TryParse nix.
Du musst auf jeden Fall etwas behandeln, wenn ein Fehler passiert.
So schon eher int var = int.Parse(Console.ReadLine());
.
Du solltest schon den Fall explizit behandeln. Ob mit try{}catch{}
oder einer Abfrage/Schleife ist egal
Da hab ich das falsche Wort benutzt. var ist dann nicht zugewiesen.
Gruß pdelvo
var hat aber den Wert 0.
Man kann es so ganz normal verwenden
Und das finde ich nicht gut
Grüsse See Sharp
Hab das mal getestet. Geht doch^^
Aber du solltest abfangen, ob eine falsche eingabe gemacht wurde
Gru++ß++ pdelvo
Wie kann ich den eingegebenen Wert ausgeben ?
Wie ich gerade gemerkt habe ist das ganze ja gar nicht nötig, oder?!
Console.WriteLine("Geben Sie eine Zahl ein: ");
int var = Console.ReadLine();
Console.WriteLine(var.ToString());
So wie du die Frage gestellt hast brauchst du die TryParse Methode ja gar nicht.
Gruss Thomas
Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"
Andererseits stellt sich die Frage, wieso du überhaupt einen Integer deklarierst, wenn du ihn nur ausgeben willst?! Da kannst du ja gleich einen String deklarieren.
Aber für den Fall, dass du mit der Eingabe rechnen willst, kannst du auf TryParse zurückgreifen.
Gruss Thomas
Gespräch zweier Informatiker:
"Wie ist denn das Wetter bei euch?"
"Caps Lock."
"Hä?"
"Na ja, Shift ohne Ende!"
Hallo,
du solltest du Variable vielleicht auch nicht gerade var nennen, da dass ab C# 3.0 ein Schlüsselwort ist.
Kontextschlüsselwörter
Ein Kontextschlüsselwort wird verwendet, um im Code eine spezifische Bedeutung bereitzustellen. Kontextschlüsselwörter sind aber keine reservierten Wörter in C#. Einige Kontextschlüsselwörter, z. B. partial und where, haben in zwei oder mehr Kontexten besondere Bedeutungen.
Dazu gehört auch var. Das ist also völlig in Ordnung, aber besser wäre i