Как убедиться, что ввод 4 чисел - это 4 получения чисел?

Мой ввод - год в 4 цифрах между 1900-3000. Таким образом, ввод должен состоять из 4 цифр 1994, 2022, 2950.

Однако, как мне проверить, является ли ввод только 3 цифрами или менее или 5 цифрами или более? Я уже сделал оператор if, если он превышает 1900 или 3000.

   if (YearNumb<1900 || YearNumb>3000)
        {
            Console.WriteLine("Du angav inte ett år mellan 1900 och 3000.");
            Console.ReadLine();
            return;

person Essej    schedule 10.02.2014    source источник
comment
какой тип YearNumb?   -  person Jodrell    schedule 10.02.2014
comment
Это int, преобразованный из строки   -  person Essej    schedule 10.02.2014


Ответы (2)


if (YearNumb<1900 || YearNumb>3000)
        {
            Console.WriteLine("Du angav inte ett år mellan 1900 och 3000.");
            Console.ReadLine();
            return;
        }
else if (YearNumb.ToString().Length != 4)
           {
            Console.WriteLine("text");
            Console.ReadLine();
            return;
        } 

Преобразуйте в строку и проверьте длину.

person user1948635    schedule 10.02.2014
comment
Не работает должным образом, если я ввожу 1700, он не выполняет его. - person Essej; 10.02.2014
comment
К сожалению, отредактировано выше, чтобы решить эту проблему и возможность показать другое сообщение. - person user1948635; 10.02.2014
comment
@Baxtex, второй if никогда не будет введен. Это бессмысленный вызов ToString(), за которым следует избыточная проверка длины. Если YearNumb является int, он не может находиться между 1900 и 3000 и иметь длину, отличную от 4. Если, я полагаю, культура, в которой вы находитесь, не имеет десятичного представления чисел. - person Jodrell; 11.02.2014

ok,

if (YearNumb < 0)
{
    ...
} 
else if (YearNumb < 1000)
{
    ...
}
else if (YearNumb > 9999)
{
    ...
}
else if (YearNumb < 1900 || YearNumb > 3000)
{
    ...
}

Вероятно, это больше похоже на то, что вы ищете.

person Jodrell    schedule 10.02.2014
comment
Число из 3 или 5 символов пройдет через int.tryparse. - person user1948635; 10.02.2014
comment
@ user1948635, но проанализированное значение не будет больше 1899 и меньше 3001. Таким образом, valid останется false, если только input не будет действительным. - person Jodrell; 10.02.2014