C# Frage stellen?
Hallo ich habe vorkurzen begonnen C# zu lernen und habe follgendes programmiert eine bedingung alter muss >=18 sein und wenn man 18 oder älter ist kommt ein satz "sie sind alt genug"und wenn man jpnger als 18 is "sie sind zu jung" das alter ist aber schon eingegeben bevor ich das programm starte also int alter = 18;
Meine eigendlicje Frage ist wie macht man es das man es erst im programm eingibt also das er dich fragt "wie alt sind sie" und dann schreibe ich eine zahl und dann kommt eines der zwei oben gennanten optionen
Danke schon im voraus.
2 Antworten
Du initialisierst halt die variable schon mit dem Wert. Ich würde, wenn du es unbedingt so machen willst, es so machen, dass du den Wert 0 als Standard nimmst. 18 trifft zu und standardmäßig sollte es nicht zu treffen.
Bevor die If Abfrage kommt, kannst du das machen:
Console.Write("Wie alt sind die? ");
alter = Convert.ToInt32(Console.ReadLine());
Conole Write schreibt in die Konsole ohne neue Zeile und Console Readline gibt den Wert der Eingabe zurück. Da es ein String ist, muss es in int konvertiert werden und als letztes noch die variable alter mit dem neuen Wert überschreiben
Mit Console.ReadLine() kannst du eine Zeile lesen, die der Benutzer eingibt. Da die Zeile für den Computer erstmal nur aus einer Zeichenkette (string) besteht, musst du sie in eine Zahl (int) umwandeln, damit du prüfen kannst, ob sie größer/kleiner als 18 ist.
static void Main()
{
Console.WriteLine("Wie alt bist du?");
int alter = Convert.ToInt32(Console.ReadLine());
if (alter < 18)
{
Console.WriteLine("Das ist leider zu jung.");
}
else
{
Console.WriteLine("Ok, du bist alt genug.");
}
}
Probleme bei der Sache: Wenn man keine Zahl eingibt, stürzt das Programm ab und man kann unsinnige Zahlen, wie z.B negative oder viel zu große Zahlen (z.B. mehrere 1000 Jahre) eingeben und das Programm schluckt es, ohne zu meckern.
Besser wäre es, wenn du nach dem Geburtsdatum fragst:
static void Main()
{
Console.WriteLine("Bitte gib dein Geburtsdatum ein (TT.MM.JJJJ)");
DateTime geburtsdatum = DateTime.Parse(Console.ReadLine());
if (geburtsdatum.AddYears(18) >= DateTime.Today)
{
Console.WriteLine("Du bist leider zu jung.");
}
else
{
Console.WriteLine("Ok, du bist alt genug.");
}
}
Oh, stimmt. Wenn man genau seinen 18. Geburtstag feiert, ist man noch zu jung. Ist dann '>' anstatt '>='.
In das zweite Beispiel hat sich ein Fehler eingeschlichen. :D