Помогите пожалуйста, и скажите, в чём ошибка моего кода?

Ребят, я тут делал код для фана, и попробовать решить эту задачу(придумал задачу я). Посмотрите мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Game_Table_Of_Multiply
{
    class Program
    {
        enum Levels
        {
            Easy,
            Normal,
            Hard,
            insane
        }

        private static string ChooseLevel()
        {
            Console.WriteLine("------------ Welcome ------------");
            Console.WriteLine("Easy level - \"E\"");
            Console.WriteLine("Normal level - \"N\"");
            Console.WriteLine("Hard level - \"H\"");
            Console.WriteLine("Insane level - \"I\"");
            Console.WriteLine("------------ Choose letter on keyborad ------------");

            if (Console.ReadLine().ToUpper() == "E")
                return "Easy";
            else if (Console.ReadLine().ToUpper() == "H")
                return "Normal";
            else if (Console.ReadLine().ToUpper() == "H")
                return "Hard";
            else if (Console.ReadLine().ToUpper() == "I")
                return "Insane";

            return "None";
        }
        static void Main(string[] args)
        {
            string level = ChooseLevel();
            Console.Clear();
            Console.Write($"Your choose: {level}. Sure?: Y(yes)/N(no)");
            string userIsSure = Console.ReadLine();

            if (userIsSure == "N")
            {
                Console.Clear();
                level = ChooseLevel();
            }
        }
    }
}

Если хотите, можете запустить этот код у себя. Так в чём проблема? В начале, он запускает метод ChooseLevel() в котором у пользователя спрашивают уровень сложности. Если я нажму на E и Enter - то она хорошо работает, а если N, H или I - то программа работает неправильно. Я жму на N и Enter - то программа не возвращает "Normal". Что делать?


Ответы (1 шт):

Автор решения: CrazyElf
        if (Console.ReadLine().ToUpper() == "E")
            return "Easy";
        else if (Console.ReadLine().ToUpper() == "H")
            return "Normal";
        else if (Console.ReadLine().ToUpper() == "H")
            return "Hard";
        else if (Console.ReadLine().ToUpper() == "I")
            return "Insane";

Вы тут при каждой проверке заново читаете строку. А надо делать это один раз. Ну и, как уже указал Эникейщик в комментарии - у вас два раза H и ни разу не проверяется N. Можно сделать как-то так:

var input = Console.ReadLine().ToUpper();
switch(input)
{
    case "E":
        return "Easy";
    case "N":
        return "Normal";
    case "H"
        return "Hard";
    case "I":
        return "Insane";
    default:
        return "None";
}
→ Ссылка