我用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())
?
我建议使用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();