Задать контролируемый ввод значений - C#
Формулировка задачи:
как задать контролируемый ввод значений
в данном случае обязательно больше нуля, возможно связать еще и существование треугольника с try catch?
static void Main(string[] args)
{
try
{
Console.Write("ввод стороны x:");
uint x = Convert.ToUInt32(Console.ReadLine());
Console.Write("ввод стороны y:");
uint y = Convert.ToUInt32(Console.ReadLine());
Console.Write("ввод стороны z:");
uint z = Convert.ToUInt32(Console.ReadLine());
if (x + y < z || x + z < y || y + z < x)
{
Console.WriteLine("такого треугольника нет");
}
}
catch (FormatException)
{
Console.WriteLine("не входит в диапазон значений");
}
}
тут только через Exception получается
да и если нули представлять как стороны не подходит
Решение задачи: «Задать контролируемый ввод значений»
textual
Листинг программы
namespace ConsoleApplication
{
static class Extensions
{
public static int? BoundedParse(this string str, int lower, int upper)
{
if (str == null)
return null;
int result;
bool success;
success = int.TryParse(str, out result);
if (!success)
return null;
if (result < lower)
return null;
if (result > upper)
return null;
return result;
}
}
class Program
{
static int PromptForNumber(string prompt, int lower, int upper)
{
int? choice;
do
{
Console.WriteLine(prompt);
choice = Console.ReadLine().BoundedParse(lower, upper);
}
while (choice == null);
return choice.Value;
}
static void Main()
{
string s = Console.ReadLine();
int upper = 10;
int lower = 1;
int res = PromptForNumber(s, lower, upper);
}
}
}