Laden...

C# - Programm, Menü funktioniert leider nicht

Erstellt von Seesnotrettung vor 3 Jahren Letzter Beitrag vor 3 Jahren 692 Views
S
Seesnotrettung Themenstarter:in
1 Beiträge seit 2020
vor 3 Jahren
C# - Programm, Menü funktioniert leider nicht

Liebe mycsharp-Gemeinschaft,

ich habe mich heute zum ersten Mal an das Programmieren mit C# gewagt. Konkret wollte ich ein Programm erstellen, mit dem ich mir das aufwändige Berechnen von pH-Werten/Enthalpien ersparen kann. Ich habe versucht, das Programm in einzelne Unterpunkte zu gliedern, die ich in einer Art Menü ansteuern kann. Nun habe ich das Problem, dass mein Programm nicht auf die Menüauswahl reagiert und die einzelnen Berechnungen nacheinander durchführt. Wenn ich also versuche, den Unterpunkt G anzusteuern, fängt das Programm einfach mit dem Unterpunkt A an und durchläuft munter jeden einzelnen Schritt.

Wie kann ich die Menüfunktion verändern, sodass dieses Problem nicht mehr auftritt?

Ich freue mich auf Eure Antworten und Verbesserungsvorschläge und wünsche noch einen schönen Tag.
Viele Grüße

P.S.: Nachfolgend der Code:

namespace RechentoolChemie
{
    class Program
    {
        static void Main(string[] args)
        {
           

            Console.WriteLine("***Rechentool Chemie***");
            Console.WriteLine("***Bitte wählen Sie im nachfolgenden Menü die gewünschte Funktion***");
            Console.WriteLine();
            Console.WriteLine("(A) Verbrennungsenthalpie von KWS");
            Console.WriteLine("(B) pH-Wert: sehr starke Säuren");
            Console.WriteLine("(C) pH-Wert: sehr starke Basen");
            Console.WriteLine("(D) pH-Wert:      starke Säuren");
            Console.WriteLine("(E) pH-Wert:      starke Basen");
            Console.WriteLine("(F) pH-Wert:      schwache Säuren");
            Console.WriteLine("(G) pH-Wert:      schwache Basen");
            Console.WriteLine("(H) Bibliothek");
            Console.WriteLine("(I) Ende");

            do
            {
                Console.WriteLine("Bitte wählen:");
                string eingabe = Console.ReadLine();

                if (eingabe == "A")
                    Console.WriteLine("***Berechnungen von Verbrennungsenthalpien der KWS***");
                    Console.WriteLine("***nach dem Satz von Hess***");
                    Console.WriteLine("Bildungsenthalpie des zu verbrennenden KWS?");
                    string DBHM = Console.ReadLine();
                    double X = double.Parse(DBHM);
                    Console.WriteLine("Stöchiometriezahl des Kohlendioxids?");
                    string SZCO2 = Console.ReadLine();
                    double Y = double.Parse(SZCO2);
                    Console.WriteLine("Stöchiometriezahl des Wassers?");
                    string SZH2O = Console.ReadLine();
                    double Z = double.Parse(SZH2O);
                    double Verbrennungsenthalpie = Z * (-242) + Y * -(394) - X;
                    Console.WriteLine("Verbrennungsenthalpie in kJ/mol:");
                    Console.WriteLine(Verbrennungsenthalpie);

                if (eingabe == "B")
                    Console.WriteLine("***pH-Wert einer wässrigen Lösung***");
                    Console.WriteLine("***einer sehr starken Säure***");
                    Console.WriteLine("Konzentration in mol/L ?");
                    string C1 = Console.ReadLine();
                    double W = double.Parse(C1);
                    double pH1 = (-1) * Math.Log10(W);
                    Console.WriteLine("Der pH-Wert der Lösung beträgt:");
                    Console.WriteLine(pH1);

                if (eingabe == "C")
                    Console.WriteLine("***pH-Wert einer wässrigen Lösung***");
                    Console.WriteLine("***einer sehr starken Base***");
                    Console.WriteLine("Konzentration in mol/L ?");
                    string C2 = Console.ReadLine();
                    double U = double.Parse(C2);
                    double pH2 = 14 - (-1) * Math.Log10(U);
                    Console.WriteLine("Der pH-Wert der Lösung beträgt:");
                    Console.WriteLine(pH2);

                if (eingabe == "D")
                    Console.WriteLine("***pH-Wert einer wässrigen Lösung***");
                    Console.WriteLine("***einer starken Säure***");
                    Console.WriteLine("Konzentration in mol/L ?");
                    string C3 = Console.ReadLine();
                    double V = double.Parse(C3);
                    Console.WriteLine("KS-Wert ?");
                    string KS = Console.ReadLine();
                    double S = double.Parse(KS);
                    double cH3O = (-1) * (S / 2) + Math.Sqrt((((S * S) / 4) + S * V));
                    double pH3 = (-1) * Math.Log10(cH3O);
                    Console.WriteLine("Der pH-Wert der Lösung beträgt:");
                    Console.WriteLine(pH3);

                if (eingabe == "E")
                    Console.WriteLine("***pH-Wert einer wässrigen Lösung***");
                    Console.WriteLine("***einer starken Base***");
                    Console.WriteLine("Konzentration in mol/L ?");
                    string C4 = Console.ReadLine();
                    double T = double.Parse(C4);
                    Console.WriteLine("KB-Wert ?");
                    string KB = Console.ReadLine();
                    double R = double.Parse(KB);
                    double cOH = (-1) * (R / 2) + Math.Sqrt((((R * S) / 4) + R * T));
                    double pH4 = 14 - ((-1) * Math.Log10(cOH));
                    Console.WriteLine("Der pH-Wert der Lösung beträgt:");
                    Console.WriteLine(pH4);

                if (eingabe == "F")
                    Console.WriteLine("***pH-Wert einer wässrigen Lösung***");
                    Console.WriteLine("***einer schwachen Säure***");
                    Console.WriteLine("Konzentration in mol/L ?");
                    string C5 = Console.ReadLine();
                    double Q = double.Parse(C5);
                    Console.WriteLine("pKS-Wert ?");
                    string pKS = Console.ReadLine();
                    double P = double.Parse(pKS);
                    double pH5 = 0.5 * (P - Math.Log10(Q));
                    Console.WriteLine("Der pH-Wert der Lösung beträgt:");
                    Console.WriteLine(pH5);

                if (eingabe == "G")
                    Console.WriteLine("***pH-Wert einer wässrigen Lösung***");
                    Console.WriteLine("***einer schwachen Base***");
                    Console.WriteLine("Konzentration in mol/L ?");
                    string C6 = Console.ReadLine();
                    double O = double.Parse(C6);
                    Console.WriteLine("pKB-Wert ?");
                    string pKB = Console.ReadLine();
                    double N = double.Parse(pKB);
                    double pH6 = 14 - (0.5 * (N - Math.Log10(O)));
                    Console.WriteLine("Der pH-Wert der Lösung beträgt:");
                    Console.WriteLine(pH6);

                if (eingabe == "I")
                    return;

                if (eingabe == "H")
                    break;

                else
                {
                    Console.WriteLine("Falsche Eingabe");
                    Console.WriteLine("Bitte erneut versuchen.");
                }

            } while (true);
            Console.WriteLine("Weiter so");
5.657 Beiträge seit 2006
vor 3 Jahren

Wenn man mit dem Programmieren beginnt, ist es hilfreich, wenn man sich vorher mal mit den Basics beschäftigt: [FAQ] Wie finde ich den Einstieg in C#?

Mit dem Debugger kannst du Schritt für Schritt durch dein Programm gehen, und dabei schauen, was genau passiert: [Artikel] Debugger: Wie verwende ich den von Visual Studio?

Bitte beachte zukünftig [Hinweis] Wie poste ich richtig? und poste bitte im richtigen Forum. Hier findest du die Regeln für das Code-Review-Forum: Code-Review Regeln

Weeks of programming can save you hours of planning

187 Beiträge seit 2009
vor 3 Jahren

Servus,

Du brauchst die geschweiften Klammern bei den If-Anweisungen.

                if (eingabe == "A")
                {
                    Console.WriteLine("***Berechnungen von Verbrennungsenthalpien der KWS***");
                    Console.WriteLine("***nach dem Satz von Hess***");
                    Console.WriteLine("Bildungsenthalpie des zu verbrennenden KWS?");
                    string DBHM = Console.ReadLine();
                    double X = double.Parse(DBHM);
                    Console.WriteLine("Stöchiometriezahl des Kohlendioxids?");
                    string SZCO2 = Console.ReadLine();
                    double Y = double.Parse(SZCO2);
                    Console.WriteLine("Stöchiometriezahl des Wassers?");
                    string SZH2O = Console.ReadLine();
                    double Z = double.Parse(SZH2O);
                    double Verbrennungsenthalpie = Z * (-242) + Y * -(394) - X;
                    Console.WriteLine("Verbrennungsenthalpie in kJ/mol:");
                    Console.WriteLine(Verbrennungsenthalpie);
                }

Außerdem ist es ratsam else if in diesem Fall zu verwenden oder gleich eine switch Anweisung.