是否有更优雅的方式从输入流中读取数字?

时间:2015-08-10 11:23:09

标签: c#

我在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#的新人。请帮助我,是否有更优雅的方式从输入流中读取数字?例如,如何在C#中更准确地模拟while (!StdIn.isEmpty())

1 个答案:

答案 0 :(得分: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();