2015-08-10 5 views
1

У меня есть следующий код тест-клиента в Java:Есть ли более элегантный способ чтения чисел из входного потока?

public static void main(String[] args) 
{ 
    int N = StdIn.readInt(); // Read number of sites. 
    while (!StdIn.isEmpty()) 
    { 
    int p = StdIn.readInt(); 
    int q = StdIn.readInt(); 
    } 
} 

И в C#:

public static void Main(string[] args) 
{ 
    int N = Convert.ToInt32(Console.ReadLine()); 
    string input; 
    while ((input = Console.ReadLine()) != null) 
    { 
     int p = Convert.ToInt32(input); 
     int q = Convert.ToInt32(Console.ReadLine()); 
    } 
} 

Я новичок в C#. Пожалуйста, помогите мне, есть ли более элегантный способ читать числа из входного потока? Например, как точнее моделировать while (!StdIn.isEmpty()) в C#?

+3

Почему вы думаете, что ваш код не достаточно _elegant_? И не лучше ли в [CodeReview.SE] по крайней мере? –

+0

isEmpty ближе к KeyAvailable Я думаю –

ответ

2

Я рекомендую использовать метод TryParse, а не Convert.ToInt32, потому что он не бросает System.FormatException, когда не удалось его преобразовать. Он также возвращает результат bool операции преобразования.

IsNullOrWhiteSpace несколько «более элегантный» способ проверить значение строки:

 int n, p, q; 
     string input; 

     Int32.TryParse(Console.ReadLine(), out n);    

     while (!string.IsNullOrWhiteSpace((input = Console.ReadLine()))) 
     {     
      Int32.TryParse(input, out p); 
      Int32.TryParse(Console.ReadLine(), out q);     
     } 

     Console.ReadKey(); 
Смежные вопросы