Помогите пожалуйста, и скажите, в чём ошибка моего кода?
Ребят, я тут делал код для фана, и попробовать решить эту задачу(придумал задачу я). Посмотрите мой код:
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";
}