2015-06-04 2 views
-1

Привет всем, я все еще новичок в программировании в целом. Таким образом, мой вопрос заключается в том, как обрабатывать пустой ввод пользователя в моем простом коде ?, он дает мне ошибку каждый раз, когда я нажимаю клавишу ввода с указанием значения. Мой код:C# - Как обрабатывать пустой ввод пользователя?

//Program to find the number is even or odd. 
using System; 
using System.Collection.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace practice 
    { 
    class test 
    { 
     static void Main (String[] args) 
     { 
      int i; 
      Console.Write (" Enter a number: "); 
      i = int.parse (Console.ReadLine()); // Where the error occurs when there is no user input. 
      if(i % 2 ==0) 
       { 
       Console.Write (" The number is even"); 
       Console.Read(); 
       } 
       else 
       { 
       Console.Write (" The number is odd"); 
       Console.Read(); 
       } 
       } 
      } 
      } 

любая идея? Благодарю.

+1

Попробуйте использовать int.TryParse() instead-- если синтаксический анализ не удается, вы можете цикл требовать пользователь повторно поступает на вход – antlersoft

ответ

0

У вас есть два варианта:

  1. Использование TryParse вместо Parse. Таким образом исключение не выбрасывается, и вы можете проверить, действительно ли это значение, и спросить снова, если нет.

  2. Оберните код в блоке trycatch, чтобы обработать исключение изящно и попросить пользователя повторить попытку.

В первом случае, вы в конечном итоге с чем-то вроде:

static void Main (String[] args) 
{ 
    int i; 
    Console.Write (" Enter a number: "); 
    bool result = int.TryParse(Console.ReadLine(), out i); 
    if (result) 
    { 
     // your normal code 
    } 
    else 
    { 
     Console.WriteLine("That wasn't a number."); 
    } 
} 

Во втором случае, это было бы что-то вроде:

static void Main (String[] args) 
{ 
    int i; 
    try 
    { 
     Console.Write (" Enter a number: "); 
     i = int.parse (Console.ReadLine()); 
    } 
    catch (Exception) 
    { 
     Console.WriteLine("That wasn't a number."); 
     return; 
    } 

    // rest of your code 
} 
0

попробовать что-то вроде следующего

string line = Console.ReadLine(); 

if(!string.IsNullOrEmpty(line)){ 
//Non empty input 
}else{ 
//Handle here 
} 
0

Вы можете проверить пустой пользовательский ввод с использованием метода String.IsNullOrWhiteSpace. Этот метод проверяет наличие пустых пространств или нулевой ввод на любом входе.

Вы можете проверить введенные данные, как это:

if (string.IsNullOrWhiteSpace(line)) 
{ 
    ...//parse 
} 

Поскольку вы разбор целого числа, однако, вы можете использовать функцию Int32.TryParse для анализа данных. Он вернет логическое значение, показывающее, был ли анализ успешно обработан.

int i =0; 
if (Int32.TryParse(Console.ReadLine(), out i)) 
{ 
    ...//continue 
} 
0
static void Main(string[] args) 
    { 
     int i; 
     Console.Write(" Enter a number: "); 

     if (Int32.TryParse(Console.ReadLine(), out i)) 
     { 
      if (i % 2 == 0) 
      { 
       Console.Write(" The number is even"); 
      } 
      else 
      { 
       Console.Write(" The number is odd"); 
      } 
     } 
     else 
     { 
      Console.Write(" You have to enter a number I can parse into an integer, dummy!"); 
     } 
    } 
Смежные вопросы