Этот код вызывает проблемы, если пользователь вводит неожиданное значение. Например, они вводят строку вместо числа. Поэтому вам также нужно искать и учитывать это.
Лучше всего создавать различные методы, которые будут проверять ввод и возвращать только действительный результат, в противном случае, чтобы запросить пользователя. Итак, у вас есть что-то вроде этого;
Основной метод вызывает подметоды, поэтому он относительно прост. Вы вызываете GetValidNumber
, чтобы вернуть числовые значения для номера 1 и номера 2 GetValidOperator
, чтобы вернуть действительный оператор, который сам вызывает IsValidOperator
, чтобы проверить правильность ввода (поскольку есть еще, что проверить).
Double.TryParse (...) - это основная проверка правильности введенного двойного числа. Но используя TryParese, он не будет исключением, если пользователь введет недействительный номер, а просто вернет false. Таким образом, в этом случае это безопасный способ проверки пользовательского ввода.
Код может нуждаться в уточнении и улучшении проверки ошибок, но это должно привести вас к правильному курсу.
static void Main(string[] args)
{
double number1 = GetValidNumber("Enter first number");
string op = GetValidOperator();
double number2 = GetValidNumber("Enter second number");
Console.WriteLine($"Operation is {number1} {op} {number2}");
//Add code to perform your operation
}
private static double GetValidNumber(string message)
{
Console.WriteLine(message);
string input = Console.ReadLine();
double output;
while (!Double.TryParse(input, out output) )
{
Console.WriteLine("Invalid number! Please try again");
input = Console.ReadLine();
}
return output;
}
private static string GetValidOperator()
{
Console.WriteLine("Enter an operator + - * / ");
string input = Console.ReadLine();
while (!IsValidOperator(input))
{
Console.WriteLine("Invalid Operator! Please try again");
input = Console.ReadLine();
}
return input;
}
private static bool IsValidOperator(string input)
{
bool result = false;
if (String.IsNullOrWhiteSpace(input))
return false;
if (input.Length != 1)
return false;
if (input[0] == '+' || input[0] == '-' || input[0] == '/' || input[0] == '*')
return true;
else
return result;
}