first try
This commit is contained in:
78
Utils/InputHelper.cs
Normal file
78
Utils/InputHelper.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using su.divan2000.SalaryApp.Models;
|
||||
|
||||
namespace su.divan2000.SalaryApp.Utils
|
||||
{
|
||||
public static class InputHelper
|
||||
{
|
||||
public static double AskDouble(string prompt)
|
||||
{
|
||||
double val;
|
||||
while (true)
|
||||
{
|
||||
Console.Write(prompt);
|
||||
if (double.TryParse(Console.ReadLine(), out val))
|
||||
return val;
|
||||
|
||||
Console.WriteLine("Некорректный ввод. Введите число в формате 1.0, 2.5 и т.д.");
|
||||
}
|
||||
}
|
||||
|
||||
public static int AskInt(string prompt)
|
||||
{
|
||||
int val;
|
||||
while (true)
|
||||
{
|
||||
Console.Write(prompt);
|
||||
if (int.TryParse(Console.ReadLine(), out val))
|
||||
return val;
|
||||
|
||||
Console.WriteLine("Некорректный ввод. Введите целое число.");
|
||||
}
|
||||
}
|
||||
|
||||
public static bool AskYesNo(string prompt)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Console.Write(prompt);
|
||||
string? s = Console.ReadLine()?.Trim().ToLower();
|
||||
if (s == "да") return true;
|
||||
if (s == "нет") return false;
|
||||
Console.WriteLine("Введите 'да' или 'нет'.");
|
||||
}
|
||||
}
|
||||
|
||||
public static SalaryData CreateSalaryData()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
double salary = AskDouble("Введите оклад: ");
|
||||
int days = AskInt("Введите количество рабочих дней: ");
|
||||
int night = AskInt("Введите количество ночных смен: ");
|
||||
int overtime = AskInt("Введите количество сверхурочных часов: ");
|
||||
int exp = AskInt("Введите стаж (лет): ");
|
||||
bool viol = AskYesNo("Были нарушения? (да/нет): ");
|
||||
|
||||
SalaryData data = new SalaryData(
|
||||
salary,
|
||||
days,
|
||||
night,
|
||||
overtime,
|
||||
exp,
|
||||
viol
|
||||
);
|
||||
|
||||
return data;
|
||||
}
|
||||
catch (ArgumentException ex)
|
||||
{
|
||||
Console.WriteLine($"Ошибка ввода: {ex.Message}");
|
||||
Console.WriteLine("Попробуйте ещё раз.\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user