lundi 21 novembre 2016

C# how to make this code more compact (If,else if,else)

I'm first year student and we are asked to do assigment,I wonder is there any other way to check user input so I would not have to do all the if's and else's after each input?

    static void Main(string[] args)
    {
        //var
        string s0, s1, s2, s3, s4, s5; //subejects
        string g0, g1, g2, g3, g4, g5;//grades

        //input grades/subject
        Console.Write("Enter Subject 1  : ");
        s0 = Console.ReadLine();
        Console.Write("Enter Grade 1  : ");
        g0 = Console.ReadLine();
        g0 = g0.ToUpperInvariant();
        if (g0 == "H1")
            g0 = "100";
        else if (g0 == "H2")
            g0 = "88";
        else if (g0 == "H3")
            g0 = "77";
        else if (g0 == "H4")
            g0 = "66";
        else if (g0 == "H5" || g0 == "O1")
            g0 = "56";
        else if (g0 == "H6" || g0 == "O2")
            g0 = "46";
        else if (g0 == "H7" || g0 == "O3")
            g0 = "37";
        else if (g0 == "H8")
            g0 = "0";
        else if (g0 == "O4")
            g0 = "28";
        else if (g0 == "O5")
            g0 = "20";
        else if (g0 == "O6")
            g0 = "12";
        else if (g0 == "O7" || g0 == "O8")
            g0 = "0";
        else
            Console.WriteLine("Wrong Grade Format!");

        Console.Write("\nEnter Subject 2 : ");
        s1 = Console.ReadLine();
        Console.Write("Enter Grade 2  : ");
        g1 = Console.ReadLine();
        g1 = g1.ToUpperInvariant();

        Console.Write("\nEnter Subject 3 : ");
        s2 = Console.ReadLine();
        Console.Write("Enter Grade 3  : ");
        g2 = Console.ReadLine();
        g2 = g2.ToUpperInvariant();

        Console.Write("\nEnter Subject 4 : ");
        s3 = Console.ReadLine();
        Console.Write("Enter Grade 4  : ");
        g3 = Console.ReadLine();
        g3 = g3.ToUpperInvariant();

        Console.Write("\nEnter Subject 5 : ");
        s4 = Console.ReadLine();
        Console.Write("Enter Grade 5  : ");
        g4 = Console.ReadLine();
        g4 = g4.ToUpperInvariant();

        Console.Write("\nEnter Subject 6 : ");
        s5 = Console.ReadLine();
        Console.Write("Enter Grade 6  : ");
        g5 = Console.ReadLine();
        g5 = g5.ToUpperInvariant();

        Console.Clear();

        //collect information into array
        for (int i = 0; i <= 5; i++)
        {
            string[] subjects = { s0, s1, s2, s3, s4, s5 };
            string[] grades = { g0, g1, g2, g3, g4, g5 };

            Console.WriteLine("{0,15}:{1,-15}", subjects[i],grades[i]);//output
        }
    }
}

Please don't be mad if im asking stupidly easy question but all I can find in web is much more advanced ways of doing it....Thanks.

Aucun commentaire:

Enregistrer un commentaire