Geschweifte Klammer Problem in C#/Visual Studio Enterprise beheben?
Hallo zusammen!
Ich muss für die Berufsschule in Informatik ein Programm in C# schreiben, welches nach eingabe der Höhe eines Satellites die Erdumlaufzeit des Satelliten berechnet. Da wir erst seit anfang letzter Woche mit C# arbeiten bin ich noch nicht so ganz in dieser Programmiersprache angekommen... Jetzt zeigt sich bei mir ein Fehler, welchen ich schon seit über 2 1/2 Stunden erfolglos versuche zu beheben. 2 geschweifte Klammern werden nicht angenommen und es zeigt mir an, dass ein 'while' erwartet wird und dass dies ein ungültiger Asudruck sei. Was ich nicht verstehen kann, denn ich habe einfach die einzelnen Programmabläufe in geschwungene Klammern gepackt, so wie es gemacht werden sollte. Ich habe wirklich keine Anhnung was ich jetzt da genau machen sollte, denn ich habe schon die Lösungsvorschläge von Visual Studio ausprobeirt, welche aber nicht funktionierten. Vielleicht liegt es daran, dass ich noch C# Anfänger bin ;-) Im Internet habe ich dazu auch nichts brauchbares gefunden. Vielen Dank schon im Voraus für eure Hilfe! Console.WriteLine("Siehe Bilder");
1 Antwort
Du möchtest wohl eine do-while-Schleife nutzen. Die baut sich so zusammen:
do
{
// constructions in body ...
}
while (condition); // foot
Bei dir fehlt für die äußerste Klammer also erst einmal noch der Schleifenfuß.
Des Weiteren möchtest du in dem Schleifenkörper ein try verwenden, doch dieses Konstrukt benötigt entweder einen catch- oder finally-Block hinter sich.
Im Prinzip wird in try etwas probiert, was einen Ausnahmefall auslösen kann. Bei dir könnte dies eine FormatException oder eine OverflowException sein, weil der eingelesene Wert von der Konsole vielleicht nicht als Ganzzahl interpretiert werden kann bzw. in das Format long passt.
Ein solcher Ausnahmefall muss jedoch auch aufgefangen werden. Dies sollte ein catch-Block übernehmen. In diesem kann definiert werden, was passieren soll, wenn der Ausnahmefall aufgefangen wurde. Eine Division durch 0, die ja nicht möglich ist, könnte stattdessen damit abgeschlossen werden, dass der Nutzer eine Nachricht bekommt, dass das nicht geht - um ein Beispiel zu nennen. Bei dieser kurzen Erklärung belasse ich es nun, die genauen Details solltest du dir in der Microsoft Dokumentation durchlesen.
Ändere den Code noch folgend:
try
{
h = Convert.ToInt64(Console.ReadLine());
break;
}
catch
{
}
Deine Schleife soll sicherlich eh so lange laufen, bis eine Zahl eingelesen werden konnte. Der catch-Block muss da nichts konkretes tun.
Ok, habe es ausprobiert. Hat geklappt! Vielen Dank für die professionelle und schnelle Hilfe!