C#如何使这段代码更紧凑(如果,否则如果,否则)

Edu*_*iks 2 c# if-statement

我是一年级学生,我们被要求做分配,我想知道有没有其他方法来检查用户输入所以我不必在每次输入后做所有的if和其他的或者是否有任何方法来循环它并保存6个不同的答案或类似的东西......

    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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我问一些愚蠢的简单问题,请不要生气,但我在网上找到的所有内容都是更先进的方法....谢谢.

Mat*_*son 7

我建议初始化字典来进行查找,如下所示:

var lookup = new Dictionary<string, string>
{
    ["H1"] = "100",
    ["H2"] = "88",
    ["H3"] = "77"
    // Etc.
};
Run Code Online (Sandbox Code Playgroud)

然后查找字符串如下:

g0 = g0.ToUpperInvariant();

if (!lookup.TryGetValue(g0, out g0))
    Console.WriteLine("Wrong Grade Format!");
Run Code Online (Sandbox Code Playgroud)