将文本文件读入列表时无法从 'System.IO.FileStream' 转换为 'int'

Cannot convert from 'System.IO.FileStream' to 'int' when reading text file into a List

我只想让程序读取一个 .txt 文件,取出文件中的任何内容,然后将其输入到列表中。但它会告诉我我无法转换它(无论我是否将变量设置为 var、string、int 或其他)我尝试使用 int.TryParse、Convert.ToInt32() 等。而 Convert.ToInt32关闭它,当我 运行 程序崩溃时。

static void Main(string[] args)
    {
        string listPath = @"K:\listData\listData.txt";
        int listDataSum = 0;
        int listDataMax = 0;
        int listDataMin = 0;
        string userInput = null;

        var numeralListData = System.IO.File.OpenRead(listPath);
        var listData = new List<int>(numeralListData);
        listDataSum = listData.Sum();
        listDataMax = listData.Max();
        listDataMin = listData.Min();

        Console.WriteLine(
            "Please input the data you wish to see, type 'help' for what to type");
        userInput = Console.ReadLine();
        userInput.ToLower();

        if (userInput == "sum")
        {
            Console.WriteLine("The sum of the list is " + listDataSum);
        }

编辑:如果问题重复,请发送 link,我尝试了搜索功能,所有其他问题都太复杂了,像我这样经验不足的人无法理解。

如果您尝试从文件中读取整数,然后获取它们的最小值、最大值和总和,您需要将每一行读入一个字符串数组,然后尝试将每个字符串转换为 int 并将其添加到一个列表。

static void Main(string[] args)
{
    string listPath = @"K:\listData\listData.txt";
    int listDataSum = 0;
    int listDataMax = 0;
    int listDataMin = 0;
    string userInput = null;

    var fileReader = new System.IO.StreamReader(listPath);
    List<string> stringsFromFile = new List<string>();
    string lineOfText;
    while ((lineOfText = fileReader.ReadLine()) != null)
    {
        stringsFromFile.Add(lineOfText);
    }
    List<int> intsFromFile = new List<int>();
    foreach(string s in stringsFromFile)
    {
        int temp = 0;
        if(Int32.TryParse(s, out temp))
        {
            intsFromFile.Add(temp);
        }            
    }

    listDataSum = intsFromFile.Sum();
    listDataMax = intsFromFile.Max();
    listDataMin = intsFromFile.Min();

    Console.WriteLine("Please input the data you wish to see, type 'help' for what to type");
    userInput = Console.ReadLine();
    userInput.ToLower();

    if (userInput == "sum")
    {
        Console.WriteLine("The sum of the list is " + listDataSum);
    }
}

假设每个数字在您的文本文件中位于不同的行

  • 首先阅读所有行
  • 使用 TryParsestringint
  • 将所有行转换为新列表或数组
  • 直接用一个方法和参数来操作做计算(所以可以复用)。现在您正在使用 Max(); 等进行计算,如果用户不询问,您可能不会使用这些计算。

示例:(与您的方法略有不同,希望您能从中吸取教训)

static void Main(string[] args)    
{
    string listPath = @"K:\listData\listData.txt";

    var lines = File.ReadAllLines(listPath).ToList();

    var number = 0;
    var numbers = lines.Where(line => int.TryParse(line, out number)).Select(n => number).ToList();         

    Console.WriteLine("Please input the data you wish to see, type 'help' for what to type");
    string userInput = Console.ReadLine().ToLower();

    if (userInput == "sum")
    {
        Console.WriteLine("The sum of the list is " + ListDataSum(numbers));
    }

    Console.ReadLine();
}

private static int ListDataSum(List<int> list)
{
    return list.Sum();
}