我有一个文本文件,每个数字都需要放入一个数组

时间:2015-03-31 16:03:09

标签: c# arrays quicksort

我们获得了一个随机生成~500个数字的文本文件。我有文件读取,但现在我想将它存储到一个数组中,以便我可以从最小到最大排序。每当我尝试设置它时,我都会遇到一堆不同的错误 这是我到目前为止所拥有的。

static void Main(string[] args)
    {
        try
        {

            //opens and closes the stream reader
            using (StreamReader sr = new StreamReader("sort.txt"))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);

                }
            }
        }

        catch (Exception e)
        {
            //lets user know that the file could not be read
            Console.WriteLine("Sorry that file could not be read");
            Console.WriteLine(e.Message);
        }

我是否需要在try语句中设置数组?我需要做些什么才能对这些数字进行排序?

2 个答案:

答案 0 :(得分:2)

我不知道你会得到什么错误,但是如果你只需要从文件中读取数字(假设每行一个整数),可以通过以下方式完成:

var myNumbers = File.ReadAllLines("myFile.txt")
                        .Select(x => int.Parse(x))
                        .OrderBy(x => x)
                        .ToList();

答案 1 :(得分:0)

发布有关错误的信息有助于解决这些特定问题。

但是,对于数组,如果你知道它总是500个数字,你可以简单地声明一个整数数组并按如下方式使用它:

int[] numberArray = new int[500];
numberArray[i] = int.Parse(line); //Assuming you can rely on them always being numbers

话虽如此,我认为正常的List和Linq可能是完成其中一些的首选方式。虽然我现在要保存这个例子。

如果您可以提供更多详细信息,我会尝试添加更多信息。

编辑:添加列表信息:

在程序的最顶层,你需要这个:

using System.Collections.Generic;

它告诉编译器你希望使用该程序集中的代码,它就是List类所在的位置。

接下来只需声明您的列表:

List<int> numberList = new List<int>();

然后,当您循环浏览文件时,可以将整数添加到列表中:

numberList.Add(int.Parse(line));

当您准备好对它们进行排序时,您需要将其添加到程序的顶部:

using System.Data.Linq;

然后在您的代码中,您可以创建一个包含已排序数字的新列表:

List<int> sortedListOfNumbers = numberList.OrderBy(p => p).ToList();

或者,如果您只想循环并打印出来:

foreach( int number in numberList.OrderBy(p => p)) {
    Console.WriteLine(number);
}