Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проверка корректности ввода данных в C#

saurfang Ученик (119), закрыт 3 года назад
Нужна помощь! Заранее спасибо!
Как сделать так, чтобы когда вводишь цифры в полях где нужно писать буквы, выводило ошибку, и заново вводились данные. Цифры проверить на буквы тоже.

Вот мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LB8
{
class Program
{
static void Main(string[] args)
{
string name =" ";
string author = " ";
int year = 1986;
int page = 10;

Console.WriteLine("При вводе некорректных данных введите данные заново :)");
Console.WriteLine("------------------------------------------------------");

Console.WriteLine("Введите название книги: ");
name = Convert.ToString(Console.ReadLine());

Console.WriteLine("Введите Фамилию автора с инициалами: ");
author = Convert.ToString(Console.ReadLine());

do
{
Console.WriteLine("Введите год издания книги: ");
year = Convert.ToInt32(Console.ReadLine());
} while (year <= 999);
Console.WriteLine(year);

do
{
Console.WriteLine("Введите кол-во страниц в книге: ");
page = Convert.ToInt32(Console.ReadLine());
} while (page <= 999);
Console.WriteLine(page);

Console.WriteLine("Книга '{0}' [{3} ст.] | [автор - {1}] была издана в {2} году", name, author, year, page);

Console.ReadLine();
}
}
}
Лучший ответ
Высший разум (1270989) 3 года назад
Пример для целых:
int age;
Console.Write("Введите возраст: ");
while(!int.TryParse(Console.ReadLine(), out age))
Console.Write("Неверный ввод! \nВведите возраст: ");
Console.WriteLine("Ваш возраст = {0}", age);

Для строк:
using System;
namespace q221798153
{
 class Program
 {
  public static bool checkStr(string s){
   for(int i = 0; i <= 9; ++i)
    if (s.Contains(i.ToString()))
      return false;
   return true;
  }
  public static void Main(string[] args)
  { 
   string s = Console.ReadLine();
   Console.WriteLine(checkStr(s));
   Console.ReadKey(true);
  }
 }
}
saurfangУченик (119) 3 года назад
Хорошо, спасибо!
Но как проверить буквы на ввод цифр?
Высший разум (1270989) saurfang, я же обновил ответ, добавил функцию для строк
Остальные ответы
lem Мастер (1803) 3 года назад
upd.
namespace v2
{
public enum StringValuetype
{
All,
OnlySymbols,
OnlyNumericInt
}

class Program
{

static void Main(string[] args)
{
string AllSymbols = GetStringValue("Введите любую строку");
string NotNumeric = GetStringValue("Введите строку не содержащую цифры", StringValuetype.OnlySymbols, true);
string OnlyNumericInt = GetStringValue("Введите только цифры", StringValuetype.OnlyNumericInt, true);
}

///
/// Получение строки
///
/// Сообщение на экран
/// Валидация строки
/// Повторение ввода (нактуально для валидации All)
///
static string GetStringValue(string message, StringValuetype valueTupe = StringValuetype.All, bool repeatInput = false)
{
Console.WriteLine($"{message}: ");

switch (valueTupe)
{
case (StringValuetype.OnlySymbols):
if (Console.ReadLine().NotContainsNumeric(out var outputString))
return outputString;
else
{
Console.WriteLine("Строка содержит цифры!");
if (repeatInput)
return GetStringValue(message, valueTupe, repeatInput);

return null;
}
case (StringValuetype.OnlyNumericInt):
if(int.TryParse(Console.ReadLine(), out var res))
{
return res.ToString();
}
else
{
Console.WriteLine("Строка содержит символы!");
if (repeatInput)
return GetStringValue(message, valueTupe, repeatInput);

return null;
}
default:
return Console.ReadLine();

}
}
}

public static class Ext
{
public static bool NotContainsNumeric(this string expression, out string value)
{
if (expression.Any(x => int.TryParse(x.ToString(), out var res)))
{
value = null;
return false;
}
value = expression;
return true;
}
}
}
lemМастер (1803) 3 года назад
и можно вместо do while вызывать

author = GetStringValue("Введите Фамилию автора с инициалами", StringValuetype.OnlySymbols, true);

year = int.Parse(GetStringValue("Введите год издания книги", StringValuetype.OnlyNumericInt, true));

page = int.Parse(GetStringValue("Введите кол-во страниц в книге", StringValuetype.OnlyNumericInt, true));
Похожие вопросы