2014-09-15 4 views
0
//capture input value for peak size and return 
public static int GetPeakSize() 
{ 
    //declare variables, intitialize and parse after input 
    int peak; 
    Console.WriteLine("\nPlease enter the peak size (must be a number 1-10): "); 
    peak = int.Parse(Console.ReadLine()); 

    //if user enter anything that is not inside the 1-10 range, default 
    //to 3 
    if (peak < 1 || peak > 10) 
    { 
     peak = 3; 
    } 

    return peak; 
} 

В вышеописанном методе я просто пытаюсь собрать входные данные, проанализировать его, и если вход не попадает в диапазон 1-10, верните значение по умолчанию 3. Но вместо просто проверки числового ввода , Я хочу вернуть значение по умолчанию 3, если НИЧЕГО, но вводятся числовые значения 1-10. Поэтому, если они вводят «четыре» вместо 4, я бы хотел, чтобы значение по умолчанию равнялось 3. Мне хотелось бы что-то сделать по строкам if (value! = Int || value < 1 || value> 10). ..... default = 3. Я знаю, что это невозможно, но все равно вокруг?Может ли моя условная инструкция основываться на типах данных?

+0

Почему бы не просто отключить нечисловой ввод? Если они вводят «четыре» дисплея, появится сообщение с сообщением «Пожалуйста, введите только цифры». Кажется, сбивает с толку, что пользователь вводит «четыре», и просто попробуйте молча предположить 3. –

+0

@eddie_cat Да, я знаю, что это требования к назначению. – 2014-09-15 20:36:14

+0

gotcha, просто подумал, что стоит отметить. –

ответ

2

Вы можете использовать вместо TryParse:

int peak; 
    Console.WriteLine("\nPlease enter the peak size (must be a number 1-10): "); 
    if (!int.TryParse(Console.ReadLine(), out peak) || peak < 1 || peak > 10) 
    { 
     peak = 3; 
    } 

Код выше будет пытаться разобрать вход в int - если он не мог, или если проанализированный значение выходит за пределы ваших ограничений диапазона, он переопределяет peak до 3, прежде чем продолжить.

EDIT: Пропущенные ограничения диапазона.

+0

Очень приятно. Я рад, что все так просто. Спасибо за ответ. – 2014-09-15 20:37:09

2

Использование int.TryParse. int.Parse будет выдавать, если ввод не является числовым.

int peak = 0; 
bool parseSuccess = int.TryParse(input, out peak); 

if (!parseSuccess || peak < 1 || peak > 10) 
{ 

} 

int.TryParse возвратит ложь, если входной сигнал не является действительным, и если она действительна, то анализируется значение будет содержаться в «Out» параметра (peak в данном случае).

+0

Мне нравится это как альтернатива ответу Кори. Будет использовать один из них. Спасибо. – 2014-09-15 20:38:19

Смежные вопросы