1

我正在从文件中读取值并检查我的代码的值

while (sr.EndOfStream != null)
{
     a= sr.EndOfStream ? "" : sr.ReadLine();
     if (Convert.ToInt32(a) < 1)
     {
         Console.WriteLine(a+ " is not a right value");
         flag = true;
         break;
     }
     b= sr.EndOfStream ? "" : sr.ReadLine();
     if (Convert.ToInt32(b) < 1)
     {
         Console.WriteLine(b+ " is not a right value");
         flag = true;
         break;
     }
     ....

有没有其他方法可以让我的代码看起来不错

4

3 回答 3

2

我会使用非常好的TryParse方法来验证您的输入,并在每次while循环中处理一行。

while (!sr.EndOfStream)
{
    int a;
    string s = sr.EndOfStream ? "" : sr.ReadLine();
    if (int.TryParse(s, out a))
    {
        // Use the value of a, since it is an integer
    }
    else
    {
        Console.WriteLine(a + " is not a right value");
        flag = true;
        break;
    }
}
于 2013-09-09T15:48:29.143 回答
2

C# 语言为此提供了一些实用方法。我们描述了一种将字符串转换为整数的简单方法。这种方法避免了字符串无法转换时的异常。

        int value;

        if (Int32.TryParse("String Value", out value))
        {
            //Converted
        }
        else
        {
            //Can not parse to Int 
        }
于 2013-09-09T15:47:08.063 回答
1

用我的手机写,所以请原谅格式...

var lines = file.readalllines(path);
var indexes //list
for(int I = 0; I < lines.count; I++)
{
    int current;
    if(!int.TryParse(lines[I], out current)
        indexes.add(I);
}

索引现在将是每个错误行的列表(0 索引)

于 2013-09-09T15:50:37.173 回答